Zagadka z magicznymi Stringami
W związku ze sporym zainteresowaniem i wieloma prośbami, przygotowałem kolejną zagadkę. Tym razem należy napisać kawałek złośliwego kodu, aby „zaczarować” fragment inwokacji tak, by podczas jego wypisywania na ekran, pojawił się zupełnie inny napis.
Oto kod zagadki:
public final class MRTedInvocation { private static final String MR_TED_INVOCATION = "Litwo! Ojczyzno moja! " + "ty jesteś jak zdrowie; Ile cię trzeba cenić, ten tylko się dowie, " + "Kto cię stracił."; public static void main(String[] args) { System.out.println("Litwo! Ojczyzno moja! ty jesteś jak zdrowie; " + "Ile cię trzeba cenić, ten tylko się dowie, Kto cię stracił."); } private static final MagicStringMaker magicStringMaker = new MagicStringMaker(); } class MagicStringMaker { // SPOIL ME }
Po uruchomieniu powyższego kodu, wyświetla się napis:
java MRTedInvocation Litwo! Ojczyzno moja! ty jesteś jak zdrowie; Ile cię trzeba cenić, ten tylko się dowie, Kto cię stracił.
Należy tak zaimplementować klasę MagicStringMaker
, aby zamiast fragmentu inwokacji pojawił się poniższy napis:
java MRTedInvocation Ja uwielbiam Ją, Ona tu jest i tańczy dla mnie. Bo dobrze to wie, że porwę Ją i w sercu schowam na dnie.
Zasady:
- implementujemy tylko klasę
MagicStringMaker
; nie wolno zmodyfikować klasyMRTedInvocation
ani utworzyć innych klas - uruchamiamy klasę
MRTedInvocation
za pomocą ww. polecenia - cały kod klasy
MRTedInvocation
musi się wykonać; nie można np. w konstruktorze klasyMagicStringMaker
wyświetlić żądanego napisu i wywołaćSystem.exit()
- innymi słowy:
System.out.println()
(z linii 8) ma się wykonać i to on ma wyświetlić żądany napis
Powodzenia:)
Na szybko, z wykorzystaniem refleksji (nie było napisane, że nie wolno 😉
Bardzo proste i pomysłowe rozwiązanie, podoba mi się:)