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

この投稿は paiza Advent Calendar 2023 ( https://adventar.or/calendars/8644 ) 14日目の記事です。

ここまでの経緯

  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

  6. 12/13 の記事(https://note.com/haseco/n/n9bfae80c317d

出題と解答作成のラリーが続いています。

import java.util.*;

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

interface System {
    void println(String str);
    static System out = (str) -> {
        var i1 = str.length() / str.length();
        var i0 = i1 >> i1;
        var i2 = i1 << i1;
        var i4 = i2 << i1;
        var i8 = i4 << i1;
        var i3 = i2 | i1;
        var i5 = i4 | i1;
        var i6 = i4 | i2;
        var i7 = i4 | i2 | i1;

        String paiza = str.substring(i0, i5);
        var space = str.charAt(i5);
        
        var A = javax.swing.text.html.HTML.Tag.A.toString().substring(i0, i1).toUpperCase();
        var d = javax.swing.text.html.HTML.Tag.DIV.toString().charAt(i0);
        var v = javax.swing.text.html.HTML.Tag.DIV.toString().charAt(i2);
        var e = str.charAt(i7);
        var n = javax.swing.text.html.HTML.Tag.CENTER.toString().charAt(i2);
        var t = javax.swing.text.html.HTML.Tag.TR.toString().charAt(i0);
        var C = javax.swing.text.html.HTML.Tag.CENTER.toString().substring(i0, i1).toUpperCase();
        var a = javax.swing.text.html.HTML.Tag.A.toString().charAt(i0);
        var l = javax.swing.text.html.HTML.Tag.DL.toString().charAt(i1);
        var r = javax.swing.text.html.HTML.Tag.TR.toString().charAt(i1);

        java.lang.System.out.print(paiza);
        java.lang.System.out.print(space);
        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.print(r);
        java.lang.System.out.println();
    };
}

https://paiza.io/projects/tVYmEGzAC5LmboQEAP0CfA

どうでしょう。
整数の加算ができるjava.math.BigIntegerなどの各種クラスの使用が禁止されたので、ビットシフトとビットORで必要な整数を作成してみました。
我々はどこに向かってるのでしょうか。

おまけ

さらに、『toUpperCaseとtoLowerCaseを記述してはいけない』と『演算子の/, <<, >>, >>>, |, ^を記述してはいけない』『演算子の/=, <<=, >>=, >>>=, |=, ^=を記述してはいけない』『演算子の+=, -=を記述してはいけない』の制限を入れたものをどなたかどうぞ。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("paiza learning");
    }
}
  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を使用してはいけません。

  22. toUpperCaseとtoLowerCaseを記述してはいけません。

  23. 演算子の/, <<, >>, >>>, |, ^を記述してはいけません。

  24. 演算子の/=, <<=, >>=, >>>=, |=, ^=を記述してはいけません。

  25. 演算子の+=, -=を記述してはいけません。

いいなと思ったら応援しよう!