tbpgrさんの「ずんだの1桁足し算問題 Ruby編」を2018年9月にリリースされたJava11で実装しました。
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
IntStream.range(1, 10)
.boxed()
.flatMap(x -> {
return IntStream.range(1, 10).mapToObj(y -> {
int z = x + y;
var tilda = "~".repeat(z);
return String.format("%d+%d=%s%d", x, y, tilda, z);
});
})
.forEach(System.out::println);
}
}
このコードのJava11らしい点といえば、Java11より導入されたString::repeat
を利用していることでしょうか。「とある文字列をn回繰り替えした文字列を生成する」APIがJavaではながらく標準として用意されておらず、自分でUtilメソッドを作成したり、外部ライブラリを用意したりする必要がありましたが、Java11よりString::repeat
が標準ライブラリに実装されています(参考: https://qiita.com/neko_the_shadow/items/78ad73e86f45e4994a89)
なお実行結果は次の通りでした(´・ω・`)
1+1=~~2
1+2=~~~3
1+3=~~~~4
1+4=~~~~~5
1+5=~~~~~~6
1+6=~~~~~~~7
1+7=~~~~~~~~8
1+8=~~~~~~~~~9
1+9=~~~~~~~~~~10
2+1=~~~3
2+2=~~~~4
2+3=~~~~~5
2+4=~~~~~~6
2+5=~~~~~~~7
2+6=~~~~~~~~8
2+7=~~~~~~~~~9
2+8=~~~~~~~~~~10
2+9=~~~~~~~~~~~11
3+1=~~~~4
3+2=~~~~~5
3+3=~~~~~~6
3+4=~~~~~~~7
3+5=~~~~~~~~8
3+6=~~~~~~~~~9
3+7=~~~~~~~~~~10
3+8=~~~~~~~~~~~11
3+9=~~~~~~~~~~~~12
4+1=~~~~~5
4+2=~~~~~~6
4+3=~~~~~~~7
4+4=~~~~~~~~8
4+5=~~~~~~~~~9
4+6=~~~~~~~~~~10
4+7=~~~~~~~~~~~11
4+8=~~~~~~~~~~~~12
4+9=~~~~~~~~~~~~~13
5+1=~~~~~~6
5+2=~~~~~~~7
5+3=~~~~~~~~8
5+4=~~~~~~~~~9
5+5=~~~~~~~~~~10
5+6=~~~~~~~~~~~11
5+7=~~~~~~~~~~~~12
5+8=~~~~~~~~~~~~~13
5+9=~~~~~~~~~~~~~~14
6+1=~~~~~~~7
6+2=~~~~~~~~8
6+3=~~~~~~~~~9
6+4=~~~~~~~~~~10
6+5=~~~~~~~~~~~11
6+6=~~~~~~~~~~~~12
6+7=~~~~~~~~~~~~~13
6+8=~~~~~~~~~~~~~~14
6+9=~~~~~~~~~~~~~~~15
7+1=~~~~~~~~8
7+2=~~~~~~~~~9
7+3=~~~~~~~~~~10
7+4=~~~~~~~~~~~11
7+5=~~~~~~~~~~~~12
7+6=~~~~~~~~~~~~~13
7+7=~~~~~~~~~~~~~~14
7+8=~~~~~~~~~~~~~~~15
7+9=~~~~~~~~~~~~~~~~16
8+1=~~~~~~~~~9
8+2=~~~~~~~~~~10
8+3=~~~~~~~~~~~11
8+4=~~~~~~~~~~~~12
8+5=~~~~~~~~~~~~~13
8+6=~~~~~~~~~~~~~~14
8+7=~~~~~~~~~~~~~~~15
8+8=~~~~~~~~~~~~~~~~16
8+9=~~~~~~~~~~~~~~~~~17
9+1=~~~~~~~~~~10
9+2=~~~~~~~~~~~11
9+3=~~~~~~~~~~~~12
9+4=~~~~~~~~~~~~~13
9+5=~~~~~~~~~~~~~~14
9+6=~~~~~~~~~~~~~~~15
9+7=~~~~~~~~~~~~~~~~16
9+8=~~~~~~~~~~~~~~~~~17
9+9=~~~~~~~~~~~~~~~~~~18