Technology

シンタックスハイライトのテスト


各言語の比較

C言語

#include <stdio.h>

int gcd(int a, int b);

int main(void) {
    // Hello, world!と表示する
    printf("Hello, world!\n");

    // 入力を受け取ってその段数'*'の山を表示する
    int num;
    printf("num: ");
    scanf("%d", &num);
    for (int i = 0; i < num; i++) {
        for (int j = 0; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }

    // aとbの最大公約数を求める
    int a, b;
    printf("a: ");
    scanf("%d", &a);
    printf("b: ");
    scanf("%d", &b);

    printf("gcd(a, b) = %d\n", gcd(a, b));

    return 0;
}

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Python

# Hello, world!と表示する
print('Hello, world')

# 入力を受け取ってその段数'*'の山を表示する
num = int(input('num: '))
for i in range(num):
    for _ in range(i+1):
        print('*', end='')
    print('')

def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

# aとbの最大公約数を求める
a = int(input('a: '))
b = int(input('b: '))
print(f'gcd(a, b) = {gcd(a, b)}')

Java

import java.util.Scanner;

class Program {
    public static void main(String[] args) {
        // Hello, world!と表示する
        System.out.println("Hello, world!");

        // 入力を受け取ってその段数'*'の山を表示する
        Scanner scan = new Scanner(System.in);

        System.out.print("num: ");
        int num = scan.nextInt();

        for (int i = 0; i < num; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print('*');
            }
            System.out.print('\n');
        }

        // aとbの最大公約数を求める
        System.out.print("a: ");
        int a = scan.nextInt();
        System.out.print("b: ");
        int b = scan.nextInt();

        System.out.println("gcd(a, b) = " + Integer.toString(gcd(a, b)));

        scan.close();
    }

    public static int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a % b);
    }
}

PHP

<?php
    // Hello, world!と表示する
    echo 'Hello, world!', "\n";

    // 入力を受け取ってその段数'*'の山を表示する
    echo 'num: ';
    $num = intval(trim(fgets(STDIN)));
    for ($i = 0; $i < $num; $i++) {
        for ($j = 0; $j <= $i; $j++) {
            echo '*';
        }
        echo "\n";
    }

    function gcd($a, $b)
    {
        if ($b == 0) return $a;
        return gcd($b, $a % $b);
    }

    echo 'a: ';
    $a = intval(trim(fgets(STDIN)));
    echo 'b: ';
    $b = intval(trim(fgets(STDIN)));
    echo 'gcd(a, b) = ', gcd($a, $b), "\n";
?>

Rust

use std::io;
use std::io::Write;

fn main() {
    // Hello, world!と表示する
    println!("Hello, world!");

    // 入力を受け取ってその段数'*'を表示する
    let mut input = String::new();
    print!("num: ");
    io::stdout().flush().unwrap();
    io::stdin()
        .read_line(&mut input)
        .unwrap();

    let num: u32 = input.trim().parse().unwrap();
    input.clear();

    for i in 0..num {
        for _ in 0..=i {
            print!("*");
        }
        print!("\n");
    }

    // aとbの最大公約数を求める
    print!("a: ");
    io::stdout().flush().unwrap();
    io::stdin()
        .read_line(&mut input)
        .unwrap();
    let a: u32 = input.trim().parse().unwrap();
    input.clear();
    print!("b: ");
    io::stdout().flush().unwrap();
    io::stdin()
        .read_line(&mut input)
        .unwrap();
    let b: u32 = input.trim().parse().unwrap();

    println!("gcd(a, b) = {}", gcd(a, b));
}

fn gcd(a: u32, b: u32) -> u32 {
    if b == 0 {
        a
    } else {
        gcd(b, a % b)
    }
}

参考文献

以下の記事を参考にシンタックスハイライトを作成しました。