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

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

ここまでの経緯

  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

  7. 12/14 の記事(https://note.com/bt_botw/n/nf87870bb6772

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

解答案

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 i0 = Collections.EMPTY_LIST.size();
        var i1 = javax.swing.text.html.HTML.Tag.A.toString().length();
        var i2 = javax.swing.text.html.HTML.Tag.TR.toString().length();
        var i3 = javax.swing.text.html.HTML.Tag.DIV.toString().length();
        var i4 = javax.swing.text.html.HTML.Tag.BODY.toString().length();
        var i5 = javax.swing.text.html.HTML.Tag.FRAME.toString().length();
        var i6 = javax.swing.text.html.HTML.Tag.CENTER.toString().length();
        var i7 = javax.swing.text.html.HTML.Tag.COMMENT.toString().length();
        var i8 = javax.swing.text.html.HTML.Tag.FRAMESET.toString().length();
        
        var paiza = str.substring(i0, i5);
        var space = str.charAt(i5);
        var A = Collections.list(java.lang.System.getProperties().propertyNames()).getClass().getSimpleName().substring(i0, i1);
        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.A.getClass().getClass().getSimpleName().substring(i0, i1);
        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/wt-wzEhTswR0zdBuDAd82Q
どうでしょう。
もはやアドベントカレンダーを埋めるという意地だけで動いています。

Swing のパッケージを覗いたのはほぼ初めてでした。

おまけ

さらに、『「interface」と記述してはいけない』制限を入れたものをどなたかどうぞ。

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を使用してはいけません。

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

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

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

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

  26. 「interface」と記述してはいけません。



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