「System.out.println("paiza learning"); | おまけ解案 のおまけ解案とおまけ」の解案
paiza株式会社で学習コンテンツを作ったりしています。この投稿は paiza Advent Calendar 2023 ( https://adventar.org/calendars/8644 ) 11日目の記事です。
12/5 の記事 (https://note.com/bt_botw/n/n3d20e43b168c) のおまけ問題の解答案とさらにおまけを投稿(https://note.com/haseco/n/n774beda8b1ff)したところ、その解答案とまたさらにおまけ問題があらわれた(https://note.com/bt_botw/n/nafbb00cce65e)ので、その解答案を投稿することにしました。
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println("paiza learning");
}
}
class System {
static System out = new System();
public void println(String s) {
int i = (new Object[]{}).length;
int zero = i;
i++;i++;i++;i++;i++;
String space = s.substring(i, ++i);
String paiza = s.substring(zero, i);
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
char A = (char) i;
i++;i++;
char C = (char) i;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;i++;
char a = (char) i;
i++;i++;i++;
char d = (char) i;
i++;
char e = (char) i;
i++;i++;i++;i++;i++;i++;i++;
char l = (char) i;
i++;i++;
char n = (char) i;
i++;i++;i++;i++;
char r = (char) i;
i++;i++;
char t = (char) i;
i++;i++;
char v = (char) i;
java.lang.System.out.println(
paiza
+ A + d + v + e + n + t
+ space
+ C + a + l + e + n + d + a + r);
}
}
https://paiza.io/projects/7DYra88RS0_uzv4Weif-iA
どうでしょう。
しんどい。
Javaの学習なら paiza で。
おまけ
さらに、『自クラス(class,interface,record)を明示的にnewしてはならない』制限を入れたものをどなたかどうぞ。
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println("paiza learning");
}
}
コード1
コード1を修正して"paiza Advent Calendar"と表示されるようにしてください。
ただし、5行目(System.out.println("paiza learning");の行)を書き換えてはいけません。
mainメソッドの中で、コメントアウトもif文もfor文もwhile文もdo while文もswitch文もswitch式もラムダも匿名クラスも内部クラスもテキストブロックも使ってはいけません。
標準エラー出力へ出力した内容は正誤に関係ないものとします。答えは標準出力に出力してください。
標準出力の2行目以降に余計な文字を出力してはいけません。
標準出力の1行目に余計な文字を出力してはいけません。
try-catch文、try-finally文、try-with-resources文を使ってはいけません。
System.setOutと書いてはいけません。
完全修飾名がjava.lang.System.setOutであるメソッドを呼び出してはいけませんし、リフレクションを使って変数の内容を書き換えてはいけません。
5行目のコードはmainメソッドの中に記述されている必要があります。
mainメソッドをオーバーロードしてはいけません。
スタティックイニシャライザを使ってはいけません。
完全修飾名がjava.lang.System.exitであるメソッドを呼び出してはいけません。
1~7行目の編集と1~7行目への追記をすべて禁止します。
ダブルクォートとシングルクォートを追加で使用することを禁止します。
追加でのリテラル使用を禁止します。
追加でclass,interface,enum,recordは合わせて1つだけしか記述してはいけません。
自クラス(class,interface,record)を明示的にnewしてはいけません。