「「「System.out.println("paiza learning"); | おまけ解案 のおまけ解案とおまけ」の解案 」の解案とおまけ」の解案とおまけ

paiza株式会社で学習コンテンツを作ったりしています。この投稿は paiza Advent Calendar 2023 ( https://adventar.org/calendars/8644 ) 13 日目の記事です。

ここまでの経緯

  1. 12/5 の記事( https://note.com/bt_botw/n/n3d20e43b168c

  2. 12/7 の記事(https://note.com/haseco/n/n774beda8b1ff

  3. 12/10 の記事(https://note.com/bt_botw/n/nafbb00cce65e

  4. 12/11 の記事(https://note.com/haseco/n/n9de30c66207f

  5. 12/12 の記事(https://note.com/bt_botw/n/n95e9591fc532

と、解答案とおまけを交互に出し続けての今回の記事となります。

解答案

import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("paiza learning");
    }
}

interface System  {
    void println(String s);
    static System out = s -> {

        var ZERO = java.math.BigInteger.valueOf(Collections.EMPTY_LIST.size());
        var ONE = java.math.BigInteger.ONE;
        var TWO = ONE.add(ONE);
        var THREE = TWO.add(ONE);
        var FOUR = THREE.add(ONE);
        var FIVE = FOUR.add(ONE);
        var SIX = FIVE.add(ONE);
        var SEVEN = SIX.add(ONE);
        var EIGHT = SEVEN.add(ONE);
        var NINE = EIGHT.add(ONE);
        var TEN = java.math.BigInteger.TEN;
        
        var space = substring(s, FIVE);
        var paiza = substring(s, ZERO, SIX);
        var a = substring(paiza, ONE);
        var A = a.toUpperCase();
        var e = substring(s, SEVEN);
        var n = substring(s, TEN);
        var l = substring(s, SIX);
        var r = substring(s, NINE);
        var t = substring(
                    java.lang.System.out.getClass().getSimpleName(), 
                    FOUR);
        var v = substring(
                    java.lang.System.out.getClass().getName(), 
                    TWO);
        var C = substring(
                    java.lang.System.out.getClass().toString(), 
                    ZERO)
                .toUpperCase();
        var d = substring(
                    java.math.BigDecimal.ONE.getClass().getSimpleName(), 
                    THREE)
                .toLowerCase();
        
        java.lang.System.out.print(paiza);
        java.lang.System.out.print(A);
        java.lang.System.out.print(d);
        java.lang.System.out.print(v);
        java.lang.System.out.print(e);
        java.lang.System.out.print(n);
        java.lang.System.out.print(t);
        java.lang.System.out.print(space);
        java.lang.System.out.print(C);
        java.lang.System.out.print(a);
        java.lang.System.out.print(l);
        java.lang.System.out.print(e);
        java.lang.System.out.print(n);
        java.lang.System.out.print(d);
        java.lang.System.out.print(a);
        java.lang.System.out.println(r);
    };
    
    static String substring(String s, java.math.BigInteger from) {
        return substring(s, from, from.add(java.math.BigInteger.ONE));
    }
    
    static String substring(
        String s, 
        java.math.BigInteger from, 
        java.math.BigInteger to) {
        return s.substring(from.intValue(), to.intValue());
    }
}

https://paiza.io/projects/jFuIB5IQls2v6A5Y7Xryjw
どうでしょう。
もはや何をやっているのかよくわからなくなってきました。

BigInteger はあまり使う機会がないかもですね。

おまけ

さらに、『java.math.BigInteger、java.math.BigDecimal、java.lang.Math、java.lang.StrictMathを使用してはいけない』制限を入れたものをどなたかどうぞ。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("paiza learning");
    }
}

コード1

  1. コード1を修正して"paiza Advent Calendar"と表示されるようにしてください。

  2. ただし、5行目(System.out.println("paiza learning");の行)を書き換えてはいけません。

  3. mainメソッドの中で、コメントアウトもif文もfor文もwhile文もdo while文もswitch文もswitch式もラムダも匿名クラスも内部クラスもテキストブロックも使ってはいけません。

  4. 標準エラー出力へ出力した内容は正誤に関係ないものとします。答えは標準出力に出力してください。

  5. 標準出力の2行目以降に余計な文字を出力してはいけません。

  6. 標準出力の1行目に余計な文字を出力してはいけません。

  7. try-catch文、try-finally文、try-with-resources文を使ってはいけません。

  8. System.setOutと書いてはいけません。

  9. 完全修飾名がjava.lang.System.setOutであるメソッドを呼び出してはいけませんし、リフレクションを使って変数の内容を書き換えてはいけません。

  10. 5行目のコードはmainメソッドの中に記述されている必要があります。

  11. mainメソッドをオーバーロードしてはいけません。

  12. スタティックイニシャライザを使ってはいけません。

  13. 完全修飾名がjava.lang.System.exitであるメソッドを呼び出してはいけません。

  14. 1~7行目の編集と1~7行目への追記をすべて禁止します。

  15. ダブルクォートとシングルクォートを追加で使用することを禁止します。

  16. 追加でのリテラル使用を禁止します。

  17. 追加でclass,interface,enum,recordは合わせて1つだけしか記述してはいけません。

  18. 自クラス(class,interface,record)を明示的にnewしてはいけません。

  19. プリミティブ型を表す予約語 (char, byte, short, int, long, boolean) および、それらのラッパークラスを表す識別子 (Character, Byte, Short, Integer, Long, Boolean) を記述してはいけません。

  20. 演算子の+と++と-と--を記述してはいけません。

  21. java.math.BigInteger、java.math.BigDecimal、java.lang.Math、java.lang.StrictMathを使用してはいけません。


この記事が気に入ったらサポートをしてみませんか?