読者です 読者をやめる 読者になる 読者になる

FizzBuzz的なもの

プログラミング

問題(Java)

1から50まで数字を順に表示させます。ただし、2〜9の任意の数字(整数)についてその数字の倍数と一の位にその数字が含まれる数の時には、数字の隣に"うふふ"と表示させてください。2〜9の任意の数字はキーボードから最初に入力した結果を用います。なお、このプログラムはFor文を使う事を前提です。

先ほど友人に,上記の問題が解けないから教えて欲しいと言われて途中までやっているソースコードをもらった.ここには載せれないが,行数は26行だった.今日はそのプログラムを7行にして返してやったぜはははーってお話.以下,プログラムを載せる.

Ufufu.java

import java.io.*;
class Ufufu{
	public static void main(String[] args) throws IOException{
		int n=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
		for(int i=1;i<=50;i++)System.out.print((i%n==0||i%10==n)?(i+"ウフフ "):(i+" "));
	}
}

実行(任意の数字として3を指定した例)

$ javac Ufufu.java
$ java Ufufu > result.txt
3
$ cat result.txt
1 2 3ウフフ 4 5 6ウフフ 7 8 9ウフフ 10 11 12ウフフ 13ウフフ 14 15ウフフ 16 17 18ウフフ
19 20 21ウフフ 22 23ウフフ 24ウフフ 25 26 27ウフフ 28 29 30ウフフ 31 32 33ウフフ 34 35
36ウフフ 37 38 39ウフフ 40 41 42ウフフ 43ウフフ 44 45ウフフ 46 47 48ウフフ 49 50 

おしまい.中身は2行だけの記述ですっきりできました.これが僕の限界ですが,これより短いコードって書けそうですかね?Javaで.
なんだか去年のインターンシップが懐かしくなりました.そしてなぜ「うふふ」なのかも気になるところ.

参考ページ