Coderätsel

Wir haben uns ein neues Rätsel ausgedacht, bei dem es drum geht, Code richtig zu erraten und/oder ihn zu vervollständigen. Die Programmiersprache ist hierbei ziemlich egal (um so spannender wirds).
Sollte allerdings schon irgend einen Sinn ergeben. Ich fange mal an. Da ich von Java wenig Ahnung habe, schreib ich in C#.
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Raetsel1
{
class Raetsel
{
static void Main()
{
int[] array = new int[8];

        for (int z = 0; z < array.Length; z++)
        {
            switch (z)
            {
                case 0: array[z] = 30*2+5;
                    break;
                case 1: array[z] = 200/2+9;
                    break;
                case 2: array[z] = Convert.ToInt32(Math.Pow(3,5)-134);
                    break;
                case 3: array[z] = 11 //plus noch ne eins hinten;
                    break;
                case 4: array[z] = //polizeinotruf;
                    break;
                case 5: array[z] = 5*6+70-68;
                    break;
                case 6: array[z] = Convert.ToInt32(Math.Pow(27,1.0/3.0)+60);
                    break;
                case 7: array[z] = (800*3-2300)-37;
                    break;
            }
        }

        for (int i = 0; i < array.Length; i++)
        {
            char Buchstabe = Convert.ToChar(array**);
            Console.Write(Buchstabe);
        }
    }
}

}[/csharp]

Ihr könnt den gesuchten Begriff erraten, oder meinen Code vervollständigen. Wer es richtig hat, ist als nächster dran.

Ammon ??

Sofern man die Syntaxfehler (fehlende ‚;‘ in Zeile 24 und 26) behebt komm ich aufs selbe :slight_smile:

Gut Schuß
VuuRWerK :wink:

[QUOTE=VuuRWerK]Sofern man die Syntaxfehler (fehlende ‚;‘ in Zeile 24 und 26) behebt komm ich aufs selbe :slight_smile:
[/QUOTE]

Ja, ich kann ja kein ‚;‘ einfach so im freien Raum schweben lassen. Tstststs. Sollte halt nicht copy/paste-mäßig gelöst werden.

Also: Ihr habt beide Recht (Codemäßig). Das ist aber noch nicht des Pudels Kern - die Lösung. Die Fragezeichen sollten noch ersetzt werden. Und das kann man nur erraten - oder man kennt die Band - dann ists leicht…:wink:

Aber, es war wohl unvollständig erklärt - also lös ichs auf: ‚Ammon Amarth‘ ist die Lösung und der Code-Teil wurde ‚encodiert‘.

Hobbit war der erste, also is er auch dran.

Edit: Ich hab das Geschenk vergessen:

Einen Keks gibts immer, also warum nicht mal sowas:

Regional - ne Thüringer Bratwurst

Dann kommt jetzt mein Rätsel:


public class HelloWorld {

	public static void main(String[] args) throws Exception {

		String s = new String("Das Byte-Welt-Forum");
		String a = "forum.byte-welt.net";
		Field f = null;
		try {
			f = String.class.getDeclaredField("value");
			f.setAccessible(true);
		} catch (Throwable t) {}
		try {
			f.set(s, new String("http://byte-welt.net").toCharArray());
			System.out.println("Das Byte-Welt-Forum");
		} catch (Throwable t) {}
		try {
			f.set("Das Byte-Welt-Forum", a.toCharArray());
			System.out.println(s);
		} catch (Throwable t) {}
		try {
			f.set(s, "http://byte-welt.de".toCharArray());
			System.out.println("Das Byte-Welt-Forum");
		} catch (Throwable t) {}
		try {
			f.set("Das Byte-Welt-Forum", "forum.byte-welt.de".toCharArray());
			System.out.println(s);
		} catch (Throwable t) {}
		try {
			System.out.println("Das Byte-Welt-Forum");
		} catch (Throwable t) {}
	}
}```

Ausprobieren zählt nicht ;)

@Jango: Ich habe nicht copy-pasted und kompilieren lassen sondern die fehlenden ‚;‘ sind mir von Anfang an aufgefallen :wink: Daher wäre es auch egal Du nun ein alleinstehendes ‚;‘ in der Zeile stehen hast oder einen Kommentar der das ‚;‘ „verdeckt“ :slight_smile:

@The_S: Ich würde folgende Ausgaben haben wenn ichs mit meinem „Brain“ kompiliere:


Das Byte-Welt-Forum
http://byte-welt.net
Das Byte-Welt-Forum
http://byte-welt.de
Das Byte-Welt-Forum

Gut Schuß
VuuRWerK :wink:

Erste Zeile ist richtig,
Zweite Zeile ist ein bisschen falsch,
Dritte Zeile ist falsch,
Vierte Zeile ist richtig,
Fünfte Zeile ist falsch

Das Byte-Welt-Forum
http://byte-welt.net
http://byte-welt.net
http://byte-welt.de
forum.byte-welt.de

das wäre meine Idee

1.) richtig
2.) ein bisschen falsch
3.) falsch
4.) richtig
5.) falsch

Hm,

bei:

try {
  f.set("Das Byte-Welt-Forum", a.toCharArray());
  System.out.println(s);
} catch (Throwable t) {}

geh ich irgendwie davon aus das der Konstante String „Das Byte-Welt-Forum“ an der Stelle ein eigenes temporäres Objekt ist und damit völlig unabhängig von dem bereits bestehendem Objekt s. Wenn aber f global auf alle Instanzen von String Auswirkungen hat dann würde ich folgende Ausgabe erzeugen:


Das Byte-Welt-Forum
forum.byte-welt.net
http://byte-welt.de
http://byte-welt.de
forum.byte-welt.de

Wobei ich aber irgendwie noch Zweifel habe ob die Reflection wirklich so globale Auswirkungen hat, bzw hätte ich einfach etwas anderes erwartet.

Gut Schuß
VuuRWerK :wink:

Einfach mal geraten: Muss ein String gleich groß sein wie der Wert der vorher drin steckte?
Ich hatte erst das hier raus:

Das Byte-Welt-Forum
http://byte-welt.net
forum.byte-welt.net
http://byte-welt.de
forum.byte-welt.de

Dabei fällt in einer Schriftart mit gleichem Zeichenabstand auf, dass die zweite Zeile länger ist. Damit wäre meine Idee:

Das Byte-Welt-Forum
http://byte-welt.ne
forum.byte-welt.net
http://byte-welt.de
forum.byte-welt.de

Wieso die letzte Zeile jetzt auch wieder falsch ist, wie bei EagleEye, keine Ahnung :frowning: Vermutlich, wenn meine Idee stimmt, auch die Länge des Wortes. Nur ist mir nicht klar was der da dran hängt.

[QUOTE=VuuRWerK]Hm,

bei:

try {
  f.set("Das Byte-Welt-Forum", a.toCharArray());
  System.out.println(s);
} catch (Throwable t) {}

geh ich irgendwie davon aus das der Konstante String „Das Byte-Welt-Forum“ an der Stelle ein eigenes temporäres Objekt ist und damit völlig unabhängig von dem bereits bestehendem Objekt s.[/QUOTE]

richtig

f hat bei „set“ nur Auswirkungen auf das übergebene Objekt.

[QUOTE=VuuRWerK;10938]Hm,

bei:

try {
  f.set("Das Byte-Welt-Forum", a.toCharArray());
  System.out.println(s);
} catch (Throwable t) {}

geh ich irgendwie davon aus das der Konstante String „Das Byte-Welt-Forum“ an der Stelle ein eigenes temporäres Objekt ist und damit völlig unabhängig von dem bereits bestehendem Objekt s.[/QUOTE]

richtig

Kleiner Tipp von mir: Das scheinbar „teilweise globale“ hat etwas mit String-Pooling zu tun (sofern wir jetzt nicht aneinander vorbeireden :wink: ).

Jap

[QUOTE=Noctarius;10939]Dabei fällt in einer Schriftart mit gleichem Zeichenabstand auf, dass die zweite Zeile länger ist. Damit wäre meine Idee:

Das Byte-Welt-Forum // richtig
http://byte-welt.ne // richtig
forum.byte-welt.net // richtig
http://byte-welt.de // richtig
forum.byte-welt.de // falsch

[/QUOTE]

Fehlt noch das letzte Puzzleteilchen :wink: .

Jap, hat wieder etwas mit der länge des Wortes zu tun. Als Tipp: Man sollte beachten, dass als „value“ kein String gesetzt wird.

Reflection hat globale Auswirkungen, weil alle Strings aus einem Stringpool kommen und wenn du den von Hinten änderst änderst du so alle Strings.

Jein. Nicht alle :wink: .

Nee es wird ein Array gesetzt. Trotzdem keine Idee :smiley:

Ja ok wenn du sie auf „komischem“ Weg erstellst nicht, aber im Regelfall schon :wink:

Schade. Ich wart jetzt noch mal ein bisschen, und wenn bis dahin noch keiner draufgekommen ist, dann gibts noch nen Tipp ;).

Der „komische“ Weg wäre dann „new String(„xyz“)“.

jep :wink:

was ist eigentlich mit new String(„abc“.toCharArray()) kommt dann auch „abc“ raus oder ein neues „abc“ ?

Ich hab ne Vermutung aber ich wüsste nicht warum das passieren sollte. Weil man immer mit Sourcegrenzen und nicht mit Targetgrenzen kopiert (falls du weißt, was ich meine).
Immerhin wird das letzte try/catch auch nen Grund haben :smiley: