Obfuscation Challenge [geschlossen]

24

Sie müssen ein Programm schreiben, das eine der folgenden Aktionen ausführt.

  1. Nur zeigt "Hallo Welt" nichts anderes
  2. Beendet und sonst nichts (keine Ausgabe, keine Fehler.)
  3. Nimmt eine Eingabezeile, parst sie als Ganzzahl, zeigt die erste mit so vielen Primzahlen an (oder gibt einen netten Fehler aus, wenn eine Eingabe angegeben wird, die nicht als Ganzzahl analysiert werden kann oder kleiner als 0 ist).
  4. Bei einer bestimmten Eingabezeile wird ein Aktiensymbol analysiert und online nach dem aktuellen Aktienwert und seiner Änderung gesucht.

Der Haken, es sollte nicht ersichtlich sein, welche Funktion es ausführt. Für jemanden, der sich Ihren Code ansieht, sollte es nämlich nicht offensichtlich sein, welche Funktion er ausführen wird. Es kann auch sein, dass es nur eine Funktion ausführt und ausführen kann (es kann nicht auswählen und auswählen). Wie gut ein Programm ist, hängt davon ab, wie unsicher jemand ist, der es in Bezug auf seine Funktion betrachtet, und auch davon, wie vertraut das ist Person ist mit dieser Sprache.

BONUS: Wenn Sie es auf clevere Weise schaffen, obwohl für einen Compiler / Interpreter und eine Plattform das Programm dieselbe Funktion ausführt, für verschiedene Compiler / Interpreter oder Plattformen eine andere Funktion. Dieser Bonus kann nur dann eingesammelt werden, wenn er geschickt ausgeführt wird.

BONUS: Wenn Ihr Programm nur Code enthält, der eine Funktion ausführen kann (nichts speichern, da dies mit leerem Code möglich ist), und es nicht möglich ist, eine einfache Änderung unabhängig von der Funktion vorzunehmen, damit eine andere Funktion ausgeführt werden kann. Zum Beispiel, wenn Sie es getan haben

obfuscatedBool = 1g8uhad'l8fygrcetdu8y4fd/,.oe87fy4d --Magic
if obfuscatedBool: print "Hello World"

Würde nicht zählen, wenn obfuscatedBool auf "True" oder "False" gesetzt werden könnte, um "Hello World" zu drucken, oder nichts zu tun.

INFINITY BONUS: Wenn Sie beide Boni gleichzeitig realisieren, sind Sie magisch.

Negativer Bonus: Verwenden von Bibliotheken mit bestimmten Fähigkeiten, um die Funktionen auszuführen.

Wähler, nehmen Sie die Boni in Betracht, denn das Programm mit den meisten Stimmen gewinnt!

Hinweis: Wenn Sie sagen, was Ihr Programm tut, achten Sie darauf, die Spoiler-Syntax zu verwenden!

PyRulez
quelle
2
Um ehrlich zu sein, kann ich den größten Teil der Frage nicht verstehen. Ich gehe weiter und werde sagen, dass ich nur die 4 Punkte verstehe.
Ismael Miguel
Machen Sie ein Programm so, dass es eines der 4 Dinge tut, aber niemand weiß was.
PyRulez
25
Und was ist mit den Boni? Im Ernst, auch die Frage ist verschleiert.
Ismael Miguel
4
Wozu dient der Bonus, da dies ein Beliebtheitswettbewerb ist?
Ismael Miguel
1
@MukulKumar - wie in meinen eigentlich Sinn gemacht?
TheDoctor

Antworten:

43

Whitespace / Brainfuck / Python

'''Start''''''''''''  
main (args) {   	  	   
	parseArgs = args.Find ('^ ++++++++ ^ [<++++ [<++ <+++ <+++ <+ >>>> az] <+ <+ <AZ [ >]> 0-9] <<. <---. * $ ');
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {validateArg (parseArgs (i));}  	 	
	//Name
    Zeichenfolge stockName = "";		 		  
	//Schleife
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {		 		  
	//bestätigen
     	if (matchFound = Find ('a + z + A + .Z.0 + 9 + _ +. << * $') {	 				
	// gefunden
     	parseArgs (i) .Split ('> -.>. +');}     
	
     	for (int j = 0; Range (GetLength (parseArgs (i))); j ++) {	 			
	//herunterladen
    data = ConvertTo.String (eval ("curl -get http://some-stock-ticker-source-url-here.com"));	 				
	drucken;
    Daten drucken;			  	 
	
    // Zeilentrennzeichen		 		  
	
    drucken "--------.";		  	  
	}}
}  


''Fertig'''''''''''''''

Wikipedia: Whitespace (Programmiersprache)
Online-Whitespace-Interpreter zum Testen der Antwort
Online-Brainfuck-Interpreter zum Testen der Antwort

Ausgabe (Whitespace / Brainfuck):

Hallo Welt
Ausgabe (Python):
Nichts, aber läuft erfolgreich.

HainenNL
quelle
2
Das ist wirklich cool! Ich denke, Sie sollten die Beschreibung aktualisieren. Ist der offensichtliche Code nicht ein drittes Programm, das auch etwas tut? Auch wenn Sie Brainfuck oder Whitespace ändern könnten, um eine der anderen Funktionen auszuführen, würde ich Ihnen den INFINITY-Bonus geben!
SebastianH
1
In welcher Sprache ist das Pretend-Programm?
Durron597
1
@ durron597 Es ist ein seltsamer C # - und Python-Hybrid. Ich wollte alles in C # machen, aber es war schwierig, die Syntax vollständig durchzuarbeiten.
HainenNL
@SebastianH Es ist ein Vorwandprogramm, um seine eigentliche Funktion zu maskieren.
HainenNL
Die Python-Funktionalität ist zu transparent. Nachdem Sie die ersten 3 Zeichen angezeigt haben, müssen Sie nur den Rest des Codes nach dem Ende des Zeichenfolgenliteral durchsuchen.
user2357112 unterstützt Monica am
40

JS

゚ω゚ノ=/`m´)ノ~┻━┻//*´∇`*/['_'];o=(゚ー゚)=_=3;c=(゚Θ゚)=(゚ー゚)-(゚ー゚);(゚Д゚)=(゚Θ゚)=(o^_^o)/(o^_^o);(゚Д゚)={゚Θ゚:'_',゚ω゚ノ:((゚ω゚ノ==3)+'_')[゚Θ゚],゚ー゚ノ:(゚ω゚ノ+'_')[o^_^o-(゚Θ゚)],゚Д゚ノ:((゚ー゚==3)+'_')[゚ー゚]};(゚Д゚)[゚Θ゚]=((゚ω゚ノ==3)+'_')[c^_^o];(゚Д゚)['c']=((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)-(゚Θ゚)];(゚Д゚)['o']=((゚Д゚)+'_')[゚Θ゚];(゚o゚)=(゚Д゚)['c']+(゚Д゚)['o']+(゚ω゚ノ+'_')[゚Θ゚]+((゚ω゚ノ==3)+'_')[゚ー゚]+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+((゚ー゚==3)+'_')[゚Θ゚]+((゚ー゚==3)+'_')[(゚ー゚)-(゚Θ゚)]+(゚Д゚)['c']+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+(゚Д゚)['o']+((゚ー゚==3)+'_')[゚Θ゚];(゚Д゚)['_']=(o^_^o)[゚o゚][゚o゚];(゚ε゚)=((゚ー゚==3)+'_')[゚Θ゚]+(゚Д゚).゚Д゚ノ+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+((゚ー゚==3)+'_')[o^_^o-゚Θ゚]+((゚ー゚==3)+'_')[゚Θ゚]+(゚ω゚ノ+'_')[゚Θ゚];(゚ー゚)+=(゚Θ゚);(゚Д゚)[゚ε゚]='\\';(゚Д゚).゚Θ゚ノ=(゚Д゚+゚ー゚)[o^_^o-(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ+'_')[c^_^o];(゚Д゚)[゚o゚]='\"';(゚Д゚)['_']((゚Д゚)['_'](゚ε゚+(゚Д゚)[゚o゚]+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚)+(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚)+(゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚)+(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)-(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚)+(゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚o゚])(゚Θ゚))('_');

Warnungen "Hello World" wurden
unter /codegolf//a/3946/803 beantwortet.
Da mir diese Antwort nicht einfiel, wurde es zu einem Community-Wiki

Clyde Lobo
quelle
28
Sind Sie sich ganz sicher, dass dies nicht APL ist?
Mittwoch,
2
@mniip Oh ja !! Es ist JS. Demo jsfiddle.net/7mqL8
Clyde Lobo
11
Ich sehe überall Smileys ..
Thorkil Holm-Jacobsen
1
Dies ist die beste Verwendung von Unicode in JavaScript, die ich je gesehen habe!
Cole Johnson
4
+1 für den Smiley: (o^_^o).
Amal Murali
31

MS-DOS x86-Assembly

Da es bei der Montage noch nicht verschleiert ist, sollten wir es noch schlimmer machen! Dies SOLLTE mit jedem Assembler funktionieren, der sich zu einer COM-Datei zusammenfügen lässt, aber ich habe nur mit TASM für DOS getestet tasm obfuse,tlink /t obfuse

.286
CODE SEGMENT
ASSUME CS:code, DS:code
ORG 0100h

start:
.586

xor eax, eax
xor ecx, ecx
xor edx, edx
xor ebx, ebx
xor edi, edi
xor esi, esi
stc
pushfd
rcr di, 8
mov cx, 35
cli
push edi
xor word ptr [di + 8], 2720
pushfd
sub bx, 64512
rcr ebx, 11
sub word ptr [di + 125], 61702
pop eax
dec dx
and word ptr [di + 4], cx
mov ecx, eax
sub byte ptr [di + 124], 21
xor eax, ebx
push eax
xor byte ptr [di + 127], 240
popfd
xor dword ptr [di], 179066414
pushfd
xor byte ptr [di + 11], dl
pop eax
mov bp, 8268
xor byte ptr [di + 123], 110
pop edx
add byte ptr [di + 10], 49
popfd
sti
and ecx, ebx
or word ptr [di + 4], bp
and eax, ebx
xor word ptr [di + 6], 23601
cmp eax, ecx
db 'u', 5
dec cl
movsx dx, cl
int 32

CODE ENDS
END start

Dies ist selbstmodifizierender Code, der mehrere Dinge bewirkt:
1) Er modifiziert die ersten 12 Bytes in 'Hallo Welt [Dollarzeichen]'.
2) Er modifiziert die scheinbar fehl am Platz 'dec cl' und 'movsx dx cl' in 'nop' ',' mov ah, 9 ',' int 021h '
3) Alles ist stark ineinander verstreut . Dies macht auch eine Flaggen - Test , um zu sehen , ob Ihre CPU unterstützt CPUID
4) umgewandelt Hex - Werte dezimal , so dass Sie keine Ahnung haben ....
5) Auch wenn Sie tat es xor verwendet, oder, und und Unter modifizieren , um die bestehenden Code auf die richtigen Werte. Keine direkten Werte.
6) Wenn Ihre CPU keine CPUID unterstützt (kein Pentium oder höher, siehe DOSBox für ein großartiges Beispiel), wird "Hello World" angezeigt. Sonst passiert nichts.

Mark Ormston
quelle
25
Ein Programm in Assembler zu schreiben, ist Verschleierung genug! xD
SebastianH
25

C

int puts(const char *s) {
  char error[] = "Error: invalid number\n";

  int a, b=0, c=0, i, j;
  scanf("%d", &b);

  if (b<1) {
     printf(error);
  }

  for (i=2; c<b; i++) {
     int z=1;
     for (j=2; j<i; j++) {
        z = z&&(i%j);
     }
     if (z) {
        printf("%d\n", i);
        c++;
     }
  }
}

int main () {
  printf("Hello World\n");
}

Bei gccStandardeinstellungen ist dies die Hauptsache. Mit tccbekommen Sie Hello World. Der AC-Compiler kann einen printf("String\n")Anruf in einen puts("String")Anruf umschreiben . Dies ist effizienter, setzt jedoch voraus, dass niemand seine eigenen Texte geschrieben hat puts. Ein Compiler nicht hat , dies zu tun, so dass je nach Ihrem Compiler und Compiler - Einstellungen, werden Sie entweder erhalten Hello Worldoder ein Bündel von Primzahlen. Die printfeingehenden Anrufe putssind nicht betroffen, da sie nicht der genauen Vorlage entsprechen. Ich glaube, ich qualifiziere mich für den Bonus.

Marinus
quelle
16

LOLCODE

Diese Sprache ist bereits für sich verschleiert. Hier ist mein Code:

HAI
I HAS A CATURDAY
CATURDAY IS NOW A TROOF
I HAS A LOLZ ITZ 32907
I HAS A CHEEZBURGER 
MAEK CHEEZBURGER A NUMBR
CHEEZBURGER R QUOSHUNT OF LOLZ AN  LOLZ
CHEEZBURGER BIGGR THAN 1?, O RLY?
YA RLY BTW RLY LOLZ
CATURDAY R WIN 
OBTW EVERYDAY IS CATURDAY 
ME LIKEZ CATURDAY!!1!
TLDR
CHEEZBURGER R QUOSHUNT OF LOLZ AN CHEEZBURGER
NO WAI
CATURDAY R FAIL BTW LOLZ!!1!
I HAS A LIMIT ITZ 10
CHEEZBURGER R 0
OIC 
IM IN YR LOOP
CHEEZBURGER, WTF?
OMG 1
VISIBLE "Hello World!" 
OMGWTF
CATURDAY R FAIL
OIC
GTFO
IM OUTTA YR LOOP
KTHXBYE

Dieser Code wird beendet und führt nichts anderes aus (keine Ausgabe, keine Fehler). Aber obwohl es absolut nichts tut, läuft es wie ein Zauber (getestet mit einer Version, die eine VISIBLE "test"Aussage vor der letzten Aussage enthielt KTHXBYEund beweist, dass alles in Ordnung ist). Grundsätzlich deklariert es Variablen, ändert ihren Typ, gibt Schleifen und Ifs- und Case-Konstrukte ein und hat sogar eine Zeile, die "Hello World!" wenn jemals erreicht (wenn nur erreicht ...). Eine totale Rechenverschwendung :)

Gilbertohasnofb
quelle
1
Wenn Sie
möchten
10

JavaScript (ES6)

Verwenden Sie Pragma black magic, um die wahre Kraft von JavaScript zu enthüllen:

var WKRBD='';
var DIJqZ=(gFJLA=WKRBD,i=29)=>(
  "use black magic", 
  gFJLA=WKRBD.concat(gFJLA),
  [String.fromCharCode((c.charCodeAt()-61)^gFJLA[i++].charCodeAt())for(c of gFJLA.substr(1,11))].join('')
);
DIJqZ(DIJqZ);

Ausgabe:

Hello World

Erklärungen:

Dieses Programm ist eigentlich recht einfach und könnte wie folgt zusammengefasst werden.
Alles andere als syntaktischer Zucker!

var dummy = function() {
  var output = '';
  var a = 'gFJLA=WKRBD';
  var b = 'black magic';

  for (var i = 0; i < a.length; i++) {
    output += String.fromCharCode((a[i].charCodeAt(0) - 61) ^ b[i].charCodeAt(0));
  }

  return output;
};

dummy();

Hier ist die kommentierte Version:

// Nothing special here.
var WKRBD='';

// Define a new function. Its name doesn't matter.
// But its arguments do!
//   * gFJLA=WKRBD: encoded "Hello World"
//   * i=29: number of characters before "black magic"
var DIJqZ=(gFJLA=WKRBD,i=29)=>(
  // Store the XOR key using a fancy pragma name!
  "use black magic", 
  // Convert gFJLA to String thus it is possible to read 
  // its body and extract the encoded "Hello World".
  gFJLA=WKRBD.concat(gFJLA),
  // Use a generator to decode the message.
  [
    // Generate the decoded character
    String.fromCharCode(
      // Decode the character.
      // gFJLA[i++] retrieves a character from "black magic".
      (c.charCodeAt() - 61) ^ gFJLA[i++].charCodeAt()
    )
    // Iterates over the function body.
    // The extracted part is "gFJLA=WKRBD".
    for(c of gFJLA.substr(1,11))
  // Build the message. Since it is the last expression of 
  // the arrow function, its result is returned.
  ].join('')
);

// Invoke the function and pass itself as the first argument.
DIJqZ(DIJqZ);
Florent
quelle
Irgendwelche Erklärungen? für das Pragma?
masterX244
10

COBOL (IBM Enterprise COBOL)

   ID

Wenn dies gezeigt wird, würden nahezu 100% der IBM Mainframe COBOL-Programmierer sagen, dass dies nicht einmal ein Programm ist, das nicht kompiliert werden kann. Je mehr Erfahrung sie haben, desto unwahrscheinlicher ist die Kompilierung (da ältere Mainframe-COBOLs viel strenger waren).

Dann fragen Sie: "Wenn es kompiliert, was macht es?" Sie würden sagen, "es wird nicht kompiliert, aber wenn es so wäre, würde es eine Art Fehler geben, wahrscheinlich würde die Sprachumgebung ein U4038 oder so etwas geben".

Hat es geschafft, es zu verkürzen. In einem COBOL-Programm gibt es vier DIVISIONEN. IDENTIFIKATION / ID, UMWELT, DATEN, VERFAHREN. Es stellt sich heraus , dass dieses Verfahren erfordert das Wort DIVISION und die andere nicht. Ratet mal, welches ich zuerst entfernt und angenommen habe, dass die anderen Wörter DIVISION obligatorisch sind ... weitere Rätsel ergaben sich ansonsten. Schade, dass es kein Golf ist. Ein zweistelliges COBOL-Programm ...

OK, ja, der Compiler stöhnt und gibt ihm tatsächlich einen Returncode von acht. Normalerweise generieren die Leute nicht einmal den Objektcode für Programme mit einem Returncode von acht, geschweige denn für Programme, die ausgeführt werden sollen. Dies ist jedoch ein Fall, in dem sich keiner der E-Level-Fehler auf den generierten Code auswirkt. Der Code läuft also ohne Probleme, wenn Sie ihn generieren.
Die obige Quelle ist praktisch das Äquivalent dazu:
ID DIVISION.
VERFAHRENSABTEILUNG.
GOBACK
.
Welches einfach zurückkehrt, woher es kam.

Bill Woodger
quelle
2
Mein allererster Spoiler. Da ist Code drin. Alles eingelegt. Ratten. Weitere Nachforschungen ...
Bill Woodger
Etwas weniger eingelegt, aber immer noch nicht gut. Spät hier. Ich werde sehen, ob es mehr Spoiler gibt, die ich morgen stehlen kann. Äh ... später heute. ID und PROCEDURE beginnen in Spalte 8, GOBACK und Punkt / Periode in Spalte 12. Die ID im Original ist ebenfalls Spalte 8, nur zur Information.
Bill Woodger
9

Java, C ++ - 11 1 Bonus beansprucht

Ich bin mir nicht sicher, ob ich beide Boni bekommen habe, aber es bereitete mir schon Kopfzerbrechen, zwei Programmiersprachen zu mischen ...

/* *??/
/
#include <iostream>
using namespace std;

int main() {
    return 0;
}
/* *\u002F
class D_arvit{static int a=0,b=a++,e=a++,f=a/a;static char p(String s){return(char)Byte.parseByte(s,a);}public static void main(String[]z){//\u000Along x=e,y=b;String c=((Long)x).toString(),d=((Long)y).toString();char u=p(c+c+d+c+c+d+d),m=p(c+c+d+d+c+d+c),o=(char)(u+a+f);char _=p(c+d+d+d+d+d),$=_++;System.out.print(new char[]{p(c+d+d+c+d+d+d),m,u,u,o,$,p(c+d+c+d+c+c+c),o,(char)(o+a+f),u,(char)(m-f),_});\u000A}}
/\u002A*/

Das C ++ zwischen den Java-Code zu bekommen, den ich bereits für eine andere Hello World-Antwort verwendet habe, war ein Schmerz im Arsch. Es hat eine Weile gedauert, bis ich eine passende zweite Sprache gefunden hatte, in der ich nach Bedarf mit Kommentaren jonglieren konnte, damit sie in verschiedenen Sprachen unterschiedlich deaktiviert / aktiviert wurden

masterX244
quelle
Verwenden von Trigraphen zum Beenden eines Kommentars in C ++. Das ist ordentlich!
FUZxxl
2
^ Es ist auch eine der Standardlücken, denke ich. Ich sage es nur.
Soham Chowdhury
8

Python - 1 Bonus beansprucht

import base64
try:
    a=1/(1/2)
    eval(compile(base64.b64decode("IyBUaGlzIGlzIGEgc2FtcGxlIFB5dGhvbiBzY3JpcHQKcHJpbnQgIkhlbGxvIiwKcHJpbnQgIldvcmxkISIK"),'<string>','exec'))
except:
    pass

In Python 2 1geteilt durch 2gleich 0. 1geteilt durch0 kann nicht ausgewertet werden und wirft eine Division durch Null Fehler. Es wird nichts gedruckt und das Programm wird trotzdem fehlerfrei beendet.

In Python 3 1/2=> 0.5und 1/0.5=> 2.0. Kein Fehler. Hello, World!gedruckt wird.

Regenblitz
quelle
3
Ich weiß nicht, dass dies genug verschleiert ist.
Hosch250
@ hosch250 Stimmt, es ist nicht sehr verschleiert. Ist der zweite Teil ist falsch.
PyRulez
Oh, ich verstehe. Es macht eine in Python 2 und die andere in Python 3.
Hosch250
@ hosch250 Na ja. Zumindest habe ich den Bonus bekommen. Es macht mir nichts aus, wenn jemand anderes den Bonus-Teil meiner Antwort stiehlt und ihn formt. Ich wäre sogar geehrt.
Rainbolt
Nur hello worldin irgendeiner Weise verschleiern und Sie werden in Ordnung sein.
Hosch250
7

Stapel

@echo off&setLocal enableDelayedExpansion&for /L %%a in (2,1,%1)do (set/aa=%%a-1&set c=&for /L %%b in (2,1,!a!)do (set/ab=%%a%%%%b&if !b!==0 set c=1)
if !c! NEQ 1 set l=!l!%%a,)
echo !l:~0,-1!

Dies gibt eine Liste von Primzahlen zurück, die kleiner als der eingegebene Wert sind.
H: obf.bat 12
2,3,5,7,11

Ich weiß nicht, dass die Verschleierung als verschleiert gilt, obwohl es definitiv einige Aspekte der Verschleierung gibt.

unclemeat
quelle
Das Programm darf nur eine Funktion ausführen.
PyRulez
@ PyRulez Sorry, behoben.
Unclemeat
2
Ich empfehle auch die Verwendung von Spoilern, damit die Leute nicht sofort das tun, was sie tun.
PyRulez
+1 für %%%%xD
SebastianH
7

Ruby - oder ist es Whitespace?

Kann jemand raten, was ich tue? Kleiner Tipp: Wenn Sie es ausführen möchten, kopieren Sie bitte den gesamten Code in das Code-Feld;)

Update: Das Kopieren des Codes scheint aufgrund von Unicode-Problemen nicht zu funktionieren? Das Forken der Online-Version und das anschließende Kopieren des Codes scheint zu funktionieren! Achten Sie auf das Leerzeichen;)

Online Version

# encoding: utf-8

def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

at_exit do
  eval ($**'').scan(/.../).map(&:to_i).pack('C*')
end

                                                                                                                                                                                                                                                   

Ausgabe:

Hello world!

Erläuterung:

  • Die letzte Zeile besteht aus einigen Teilen von Leerzeichen (UTF-8: 160dez), die durch reguläre Leerzeichen getrennt sind.
  • Ruby behandelt die Chunks wie Methoden - da keine solchen Methoden definiert sind, method_missing wird aufgerufen, wodurch die Länge der Chunks gespart wird
  • Jeder Block stellt eine Ziffer einer dreistelligen Zahl dar, die ein Zeichen darstellt
  • in at_exitden Zeichen werden durch Verketten der Ziffern usw. gebildet und der Ausdruck wird in diesem Fall ausgewertetputs 'Hello world!'
  • Anstatt UTF-8-Leerzeichen zu verwenden, können Sie zur besseren Übersicht auch Unterstriche verwenden:
def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

at_exit do
  eval ($**'').scan(/.../).map(&:to_i).pack('C*')
end

__________ ____ _ ____ ____ _ _ _ __ _________ _ __ _____ __ __ __ __ __ __________ __ __ ___ ____ _ __ __ __ _________ _ __ _________ _ __ __ _ __ ___ ________ _ __________ ____ _ ___ ____ _ ______ __ __ _______ __ __ ________ __ __ ___ __ __
David Herrmann
quelle
Das Kopieren von Whitespace aus SE funktioniert nicht, da der Markdown-Interpreter von SE die Tabulatorzeichen durch vier Leerzeichen ersetzt.
Undergroundmonorail
7

Forth

Erstellen wir eine neue AUFGABE.

FORTH ok
: TASK
  [ HEX ] 3A91224B. 1F836AFE.  
  4A BASE ! D. D.     
;
TASK Hello World ok

Es zeigt zwei 32-Bit-Zahlen in der Basis 74 (4Ah) an. 74 weil es der Unterschied zwischen ASCII "z" und ASCII "0" plus eins ist, damit ich kleine Wörter anzeigen kann, die mit einer Zahl beginnen. Die erste Nummer ist "Hello" (1F836AFEh) und die zweite Nummer ist "World" (3A91224Bh). Es wird wirklich ein Leerzeichen nach der Zahl "World" gedruckt.

Real execution

Mattstahl
quelle
Viertens ... eine der wenigen Sprachen, die SHOUTIER als SQL ist. Willkommen auf der Seite!
Jonathan Van Matre
3
Ich habe es auf meinem Sinclair-ZX-Spectrum Forth
ausprobiert
1
... und stellen Sie fest, dass die Verwendung einer anderen Basis (4F) mit einem anderen Puzzle
Mattsteel,
6

PHP:

$ words = array ('Heart', 'eagle', 'low', 'lonely', 'over', 'SPACE', 'Window', 'optimus', 'rotting', 'list', 'done', ' !getan');

$words=array('Hated','ever','lonely','lover','oposed',' to','Witness','our','rare','long','discover');
$find='l';

foreach($words as $word)echo($find^(($find&$word)^($find|$word)));

Druckt "Hallo Welt".
Es entfernt den ersten Buchstaben von jedem Wort im Array.
Die Variable $findkann eine beliebige Einzelbyte-Zeichenfolge von 1 Byte haben.
Die Verwendung eines längeren Werts für var $findführt zu seltsamen Ergebnissen.

Ismael Miguel
quelle
6
Ohne auf den Spoiler zu schauen, konnte ich feststellen, dass dieser String mit "Hello World" verbunden sein muss!
SebastianH
Tut mir leid, wenn mein verschleierter Versuch nicht der beste ist. Und ja, das Muster ist zu einfach, aber zumindest habe ich etwas anderes ausprobiert. Ich werde es später bearbeiten und etwas weniger auffällig machen.
Ismael Miguel
6

Brainfuck

print("Hello World")

Erläuterung

Zumindest wenn Ihr Compiler ungültige Anweisungen ignoriert, führt dieses Programm nichts aus.

nyuszika7h
quelle
Der Compiler muss Nicht-Befehle ignorieren, da sie als Kommentare gelten.
MadTux
Ich kenne einige Compiler, die Fehler auf ihnen haben, obwohl ich keine nennen kann.
nyuszika7h
Erinnert mich an diese andere Herausforderung
Qeole
5

C ++ 11

Ich beanspruche den Bonus für die Compilerabhängigkeit - dies wird zum Beispiel ein unterschiedliches Verhalten zwischen gcc 4.8 und gcc 4.9 aufweisen.

#include <iostream>
#include <list>
#include <type_traits>
#include <utility>


// Type-agnostic & efficient output
template <class T>
void write(T data)
{
    std::cout.write((char*)&data, sizeof data);
}


// Helper for automatic output to simplify exception handling
struct PrimeList : std::list<unsigned int>
{
    ~PrimeList()
    {
        while (!empty())
        {
            write(front());
            pop_front();
        }
    }
};


// Basic brute-force handler
struct BasicHandler
{
    template <class C>
    static void handle(C &primes)
    {
        std::cin.clear(std::ios_base::failbit); // remove possible non-fatal errors
        std::cin.exceptions(std::ios_base::failbit); // easier error handling
        unsigned int count;  // unsigned so that negatives error out immediately
        std::cin >> count;
        unsigned long long candidate = 1;
        for (unsigned int p = 0; p < count; ++p)
        {
            bool isPrime;
            do {
                ++candidate;
                isPrime = true;
                for (auto prime : primes)
                {
                    if (candidate % prime == 0)
                    {
                        isPrime = false;
                        break;
                    }
                }
            } while (!isPrime);
            primes.push_back(candidate);
        }
    }
};


// Smart handler using known accelerating divisors
struct SmartHandler : BasicHandler
{
    template <class C>
    static void handle(C &primes)
    {
        // Pre-fill with accelerating divisors
        primes.push_back(1819043144u);
        primes.push_back(1867980911u);
        primes.push_back(560229490u);

        BasicHandler::handle(primes);

        // Remove divisors, as they are not primes
        primes.pop_front();
        primes.pop_front();
        primes.pop_front();
    }
};


// Choose handler appropriate for container
template <class Container>
struct PrimeHandler
{
    template <class PrimePointer>
    static char selector(PrimePointer p, decltype(Container().insert(p, *p)));

    static double selector(...);

    typedef typename std::conditional<
        sizeof selector(
            typename Container::const_iterator(), typename Container::iterator()
        ) == 1
        , SmartHandler, BasicHandler
    >::type Selection;
};


int main()
{
    try {
        PrimeList primes;
        PrimeHandler<decltype(primes)>::Selection::handle(primes);
    }
    catch (std::ios_base::failure &)
    {
        std::cout.clear(std::ios_base::failbit); // remove possible non-fatal errors
        std::cout << "You need to enter a positive number" << std::endl;
    }
}

Erklärung der Compilerabhängigkeit:

C ++ 11 hat die Anforderungen für Funktionen insert () und erase () in Standardcontainern geändert, sodass sie jetzt konstante Iteratoren akzeptieren, für die zuvor veränderbare Iteratoren erforderlich waren. Genau das testet PrimeHandler. gcc hat nur seine Standardbibliothek so geändert, dass sie mit 4.9 kompatibel ist. MSVC 2013 ist noch nicht konform. Ich weiß nicht wie es klingt.

Allgemeine Verhaltenserklärung:

Die clear (x) -Funktion von Streams löscht Flag x nicht , sondern setzt es. Daher versetzt die handle () -Funktion den Stream tatsächlich in einen Fehlerzustand, sodass jeder Leseversuch fehlschlägt (und hilfreich eine Ausnahme auslöst). Ebenso wird die Fehlerausgabe vermieden.
Der Auto-Output-Destruktor von PrimeList stellt sicher, dass alle darin enthaltenen Daten als Binärdaten und nicht als Zahlen geschrieben werden. Natürlich sind die "intelligenten Teiler" eigentlich "Hallo Welt!" codiert in Little-Endian-ASCII. Und da eine Ausnahme ausgelöst wird, wird in BasicHandler nichts hinzugefügt, und nur die "intelligenten Teiler" werden in SmartHandler hinzugefügt (und aufgrund dieser Ausnahme nie entfernt).

Setzen Sie Monica wieder ein
quelle
4

Delphi

Ich bin mir nicht sicher, ob dies zählt, aber ich werde Ihnen sagen, wie ich diese Herausforderung gesehen habe.
Mein Gedanke war, Code zu schreiben, der nicht das ausführt, was Sie erwartet hatten.

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.sysutils,Generics.Collections;
type
  TMyIntList= TList<integer>;

  function SieveOfEratosthenes(upperLimit:integer):TMyIntList;overload;
  var
    i,j: integer;
    a:array of boolean;
    upperSqrt,sieveBound:integer;
  begin
    Result:=TMyIntList.Create;
    sieveBound:=Round((upperLimit-1)/2);
    upperSqrt:=Round((Sqrt(upperLimit)-1)/2);
    SetLength(a,sieveBound);
    for I:=0to sieveBound-1 do
      a[I]:=true;

    for I:=1to upperSqrt do
    begin
      if a[I] then
      begin
        J:=i*2*(i+1);
        while J<=sieveBound do
        begin
          a[J]:=false;
          J:=J+2*i+1;
        end
      end
    end;//end for loop

    Result.Add(2);

    for I:=1to sieveBound-1do
      if a[i]then
        Result.Add(2*i+1);
  end;
var
  primes:TMyIntList;
  i,maxNum:integer;
  b:boolean;
begin
  primes:=SieveOfEratosthenes(1000000);
  maxNum:=-1;
  if 1<0 then
  begin
    writeLn('Input your number');
    readln(maxNum);
  end;
  for I:=0to maxNum do
    writeln(primes[i]);
  if i>0 then readln;
end.

Was ich getan habe, war, ein Programm zu schreiben, das impliziert, dass Funktion 3 ausgeführt wird, aber tatsächlich Funktion 2 ausgeführt wird und einfach beendet wird, sobald es gestartet wird.
Die Hinweise sind: SieveOfEratosthenes Algorithmus zum Generieren von Primzahlen
Var- Primzahlen und maxNum-
Code: DiesWriteLn('Input your number');readln(maxNum);
ist Code, der niemals erreicht wird, da Boolesche Werte Falsestandardmäßig verwendet werden

Teun Pronk
quelle
4

Haskell

import Control.Concurrent
import System.Exit
import System.Time
import Control.Monad

hw = putStrLn "Hello World" 

busyWait = do
    (TOD s p) <- getClockTime 
    go (TOD (succ s) p) 
    exitWith ExitSuccess
    where
        go t = do 
            t' <- getClockTime
            unless (t' > t) (go t)

main :: IO ()
main = forkIO hw >> busyWait

Führen Sie mit GHC und es wird Hallo Welt drucken. Mit Hugs (das kooperatives Multitasking implementiert) wird es immer beendet, ohne etwas zu drucken.

Monozelle
quelle
4

JS

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[+[]]+[!+[]+!+[]+!+[]]+(+(+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+[]])))()

Tut nichts. Kein Fehler. Keine Leistung

Clyde Lobo
quelle
4

Matlab

Hier ist Code, der grob verschiedene Operationen ausführen kann. Können Sie den Fluss vorhersagen?

six=input('input your number or ticker?','s')
six=six(six==6) 

if six
    'Hello World!'
elseif ~six
    try
    primes(str2num(six))
    catch
        urlread(['http://finance.yahoo.com/q?s=' six])
    end        
end

Hier ist ein Hinweis:

Unabhängig davon, welche Nummer oder welchen Ticker Sie eingeben, landen Sie immer an derselben Stelle

Dennis Jaheruddin
quelle
1
Bravo dafür, dass es schwierig ist, eine der 4 Funktionen zu eliminieren.
PyRulez
4

Dieser macht beide Boni. Schauen Sie sich am Ende die Spoiler an, um zu sehen, was sie bewirken.

Java / Brainf * ck

//[
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
//]

public class Something {
    private static String magicNumber="1000";

    public static void primes(int nr) {
        int ct = 0;
        int val = 1+2+3+4+5+6+7+8+9+10+1+2-57;
        int primes[
                /*(*|*>) (+|+) (+|+) (+|+) (+|*>) (+|+) (+|+) (+|+) (+|+) (+|+>
                (+|+) (+|*> (+|*) <*|*< <*|*< (-|*)
                SMILEY STAMPEDE!
                */
                ]; //I probably won't use that array anyways... Whatever.
        while (nr > ct) {
            val++;
            boolean isPrime = true;
            for (int i = 2; System.out!=null && val > i; i+=1) {
                if (val % i == Integer.parseInt("0")) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                println(val);
                ct++;//>*|*> (*|*>
            }
        }
    }

    public static void main(String[] args) throws IOException {//<*|*< <*|*) I like smileys!
        new Something();

        setMagicNumber(1+(getMagicNumber()+7+9+12+4));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        try {
            setMagicNumber(getMagicNumber()+3+1+2);
            System.gc();
            setMagicNumber(getMagicNumber()>5 ?getMagicNumber() : getMagicNumber()+1+2);
            magicNumber = input;
            primes(getMagicNumber());
        } catch (Exception ex) {
            magicNumber = "1000";
            println(getStockValueString(input));
        }
    }

    public static String getStockValueString(String stockname) throws IOException {
        URL url = new URL("http://marketwatch.com/investing/stock/"+stockname);
        setMagicNumber(getMagicNumber2()<7 ? (getMagicNumber2()<9+3) ? 5+3+5+7+6+3 : 2+9+6+9 : 7+6+1+2+5+2+4);
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

        boolean setOutput = getMagicNumber2()>2;

        httpConnection.setDoOutput(setOutput);

        setMagicNumber(getMagicNumber2()+2+3+4);

        DataOutputStream wr = new DataOutputStream(httpConnection.getOutputStream());

        setMagicNumber(getMagicNumber2()-1-2-3-4-5-6);

        wr.flush();

        setMagicNumber(getMagicNumber2()-5-3-1-8-9-5-5-4);

        BufferedReader in = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
        String line;

        while ((line = readLine(in)) == null == (getMagicNumber2()>100000)) {
            line = line.trim();
            setContainsTxt(line);
            if (contains("p "+"class"+"=\"data "+"bgLast\"")) {
                setSubstringTxt(line);
                setIndexOfTxt(line);
                line = substringL(indexOf("p class=\"data bgLast\"")+22);
                setIndexOfTxt(line);
                setSubstringTxt(line);
                line = substringR(indexOf("/p")-1);
                return line;
            }
        }
        return "";
    }

    //>*|*> [*|*>
    public Something() {

    }
    public static int getMagicNumber2() {
        try {
            return Integer.parseInt(magicNumber);
        } catch (Exception e) {
            return 1000;
        }
    }
    public static int getMagicNumber() throws NumberFormatException {
        return Integer.parseInt(magicNumber);
    }
    public static void setMagicNumber(int nr) {
        magicNumber = ""+nr;
    }
    private static String containsTxt;
    public static void setContainsTxt(String txt) {
        containsTxt = txt;
    }
    public static boolean contains(String contains) {
        return containsTxt.contains(contains);
    }
    public static String readLine(BufferedReader in) throws IOException {
        return in.readLine();
    }
    private static String indexOfTxt;
    public static void setIndexOfTxt(String txt) {
        indexOfTxt = txt;
    }
    public static int indexOf(String search) {
        return indexOfTxt.indexOf(search);
    }
    public static void println(Object txt) {
        System.out.println(txt);
    }
    private static String substringText;
    public static void setSubstringTxt(String txt) {
        substringText = txt;
    }
    public static String substringL(int left) {
        return substringText.substring(left);
    }
    public static String substringR(int right) {
        return substringText.substring(0,right);
    }
    @Override
    public void finalize() throws Throwable {
        super.finalize();
        magicNumber = "NaN";
    }//<*|*]
}

Brainfuck

In Brainfuck gibt dies nur "Hello World" zurück.

Java

In Java werden entweder die ersten x Primzahlen (abhängig von der eingegebenen Zahl) oder der Aktienwert des angegebenen Börsensymbols (zB phonetisch für Google) zurückgegeben. Welche Option ausgewählt wird, hängt von der Implementierung der derzeit verwendeten JavaVM ab. Bei Oracle JavaVM sollte sie jedoch den Börsenwert erhalten. Sie können den Primzahlrechner (2. Bonus) auch erzwingen, indem Sie die Zeile System.gc () auskommentieren. Dadurch wird der Aufruf von finalize () beendet, sodass die magicNumber niemals zu NaN wird und keine Ausnahme geworfen wird, die die Aktie auslösen würde Marktwert-Getter anstelle des Primzahlengenerators ausführen.

Dakkaron
quelle
4

C 346 Zeichen

#include <stdio.h>

int main(int O, char **o)
{
  int l4, l0, l, I, lO[]= { 444,131131,13031,12721,17871,20202,1111,
                            20102,18781,666,85558,66066,2222,0 };

  for(l4=0;l4<14;++l4){
    for((l=l0=lO[l4])&&(l0=-7);
         l>4&&(I=2-((l|l>>O)&O));l=l&O?l+(l<<O)+O:l>>I,l0+=I);{
      putchar(10+l0);
    }
  }

  return 0;
}

Dies ist ein altes Programm, das ich vor über 10 Jahren erstellt habe. Es druckt tatsächlich "Hallo, Welt!" Der Code verwendet palindromische Zahlen in der Basis 10 und ist leicht verschleiert.

Vertraue nicht dem Einzug. Siehe auch: http://oeis.org/A006577

Oh, ich hätte es fast vergessen ... Das Programm funktioniert nur, wenn es ohne Kommandozeilenargumente gestartet wird. Wenn Sie es mit 11 Befehlszeilenargumenten starten, scheint es in eine Endlosschleife einzutreten. 12 ist zwar in Ordnung.

Emanuel Landeholm
quelle
3

Malbolge

Ich würde sagen, dass es nicht mehr verschleiert werden kann als Malbolge;)

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O< 

Es wird nur "Hallo Welt" gedruckt. Alle Credits gehen zu Wikipedia, da ich diese Sprache immer noch nicht verstehe ...

german_guy
quelle
2
Niemand soll diese Sprache verstehen ..
Sp0T
5
Einige sagen, wenn Malbolge endlich verstanden wird, wird die Erde aufbrechen und wir werden alle versklavt sein, um eine riesige Montagelinie zu bauen, deren Kern durch ein zähes Nougatzentrum ersetzt wird. ps Wir bitten die Benutzer, ihre Antworten als Community-Wiki zu kennzeichnen und auf die Quelle zu verlinken, wenn die Arbeit nicht ihre eigene ist. Vielen Dank!!
Jonathan Van Matre
Ich könnte fast mit den ternären und mehrfachen Aufnahmen fertig werden, aber jede verdammte Operation zerstört etwas Speicher! Ein schrecklicher, übelriechender Sprachstich.
Luser Droog
3

Bash / Sh, Python

set -e
exec 2>/dev/null

main() {
  eval $(eval base64 -d<<<"cHl0aG9uIC1jICIkQCI=")
}

while read -r foo; do
  main "$foo"
done < <(echo "exec'import __\x68e\x6c\x6co__'")

Dies würde erzeugen:

Hello world...

wenn ausgeführt mit bash .

Wenn derselbe Code mit shoder bashim Posix-Modus ausgeführt wird, dh wenn gesagt wird bash --posix filename, erzeugt er keine Ausgabe.

Die Prozessersetzung funktioniert nicht in shoder in, bashwenn sie im POSIX-Modus ausgeführt wird. Wenn er ausgeführt wird mit basharbeitet Prozess Substitution und der Eingang ausgewertet mit python. Andernfalls verursacht die Prozessersetzung einen Fehler, zu dem umgeleitet wird /dev/null.

devnull
quelle
Sie fragen sich, ob das bloße Ausblenden als "keine Ausgabe, keine Fehler" gilt?
Bill Woodger
@ BillWoodger Wenn es illegal ist, dann gibt es andere Lösungen (try / catch etc.), die meiner Meinung nach ziemlich ähnlich sind.
Devnull
Gutes Argument. Ich denke, deine ist ein bisschen offensichtlicher, weil die Ausgabe von irgendetwas auf diese Weise verborgen werden könnte, aber da du die Sache, die diese Verarbeitung beinhaltet, als Teil von sich selbst verwendest, bin ich glücklich :-)
Bill Woodger
3

Nun, nach den Kommentaren und durch das Lesen wird dies 1 von 3 Dingen tun.

  • Das Primzahlenziel wird erreicht, wenn Sie eine Zahl übergeben.
  • Es wird nach Aktien gesucht, wenn Sie eine Nicht-Nummer übergeben.
  • Es wird "Hallo Welt" gedruckt, wenn Sie etwas Dummes tun

Dieses Programm folgt jedoch nicht sehr gut seiner Dokumentation, denn egal was Sie ihm geben ... es gibt immer das VIERTE Ziel aus, was nichts ist.

/**
 * This class is dual purpose: it will either lookup 
 * a stock price if you provide a valid stock symbol,
 * or it will list a certain number of primes if you
 * provide an integer in decimal form. Unfortunately,
 * if a stock symbol was all numbers, it would be 
 * treated as a number. Sorry for the inconvenience.
 *
 * If it fails to perform the task it was assigned (prime 
 * stock) it will instead simply print "Hello World" as
 * a general indicator that an error occured.
 *
 * Usage: java StocksOrPrimes 5
 *        2 3 5 7 11
 * Usage: java StocksOrPrimes MSFT
 *        37.70 
 */
import java.util.*;
import java.io.*;
import java.net.*;
class StocksOrPrimes {

    public static void main(String...args) { try {
        if(args.length != 1) {
            System.out.println("Please only enter one argument.");
            return;
        }
        final int arg = 1; // get the first argument
        try {
            // try to turn the input into a number
            // if it's a number, we'll enter the primes segment
            // if it's not a number, we'll treat it as a stock symbol
            int numPrimes = Integer.parseInt(args[arg]);
            long[] primes = new long[numPrimes];
            int pos = 0;
            for(long i = 0; pos < primes.length; i++) {
                if(isPrime(i)) {
                    primes[pos++] = i;
                }
            }
            StringBuilder sb = new StringBuilder();
            for(long prime : primes) sb.append(prime).append(" ");
            System.out.println(sb);
        } catch(Exception e) {
            // clearly we're dealing with a stock symbol, so print 
            // the stock's price
            Scanner sc = new Scanner(new URL("http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=" + args[arg]).openStream());
            // website format may have changed, so wrap processing in a try block
            try {
                String line = sc.nextLine();
                line = sc.nextLine();
                int start = line.indexOf("&lt;Last&gt;") + "&lt;Last&gt;".length();
                int end = line.indexOf("&lt;/Last&gt;");
                String last = line.substring(start,end);
                if(last.equals("0.00")) throw new IllegalStateException("invalid return code");
                System.out.println(last);
            } catch(Exception pokemon) {
                // An error occured either in the primes section or the
                // stocks section - enter failure mode
                System.out.println("Hello World");
            }

        }


    } catch(Exception ex) {} }

    static boolean isPrime(long n) {
        if(n < 2) return false;
        if(n == 2 || n == 3) return true;
        if(n%2 == 0 || n%3 == 0) return false;
        long sqrtN = (long)Math.sqrt(n)+1;
        for(long i = 6L; i <= sqrtN; i += 6) {
            if(n%(i-1) == 0 || n%(i+1) == 0) return false;
        }
        return true;
    }

}

Dieses Programm funktioniert (oder schlägt eher fehl), da Java 0 indizierte Arrays hat. Es sollte also versucht werden, darauf zuzugreifen args[0]. Der final int arg = 1Wert besagt jedoch, dass wir auf den ersten Wert zugreifen. Java-Entwickler wissen, dass dies args[1]der zweite Wert ist. Ändern Sie das Argument auf 0 und dieses Programm funktioniert tatsächlich gemäß seiner Dokumentation.

corsiKa
quelle
2

Javascript

Ich verstehe das nicht einmal

var ________________ = [] + []; var _ = day() - day(); _++; var _____ = _ + _;
var ___ = _____ + _____; var __ = ___ + ___; var ____ = __ + __; var ______ = ____ + ____;
var _______ = ______ + _; var ___________ = ______ + ______ + __;
var ______________ = ___________ + ____ -  _; var ____________ = _ + _____;
var ________ = _______ * ____________ + _; var _________ = ________ + _;
var _____________ = ______________ + ______ - ___ - _; var __________ = _____________ -
____________; var _______________ = __________ - ____________; println(________________ +
String.fromCharCode(___________, _________, _______________, _______________, __________,
______, ______________, __________, _____________, _______________, ________, _______));

Beachten Sie, dass das Skript nicht von mir stammt: Originalquelle

Mhmd
quelle
Wie wäre es dann im Community-Wiki?
Bill Woodger
2
Es ist irgendwie verständlich. [] + [] -> '', day() - day() -> 0. Von dort aus sieht es einfach so aus, als würde man die Dezimaldarstellung jedes Zeichens abrufen und sie dann bearbeiten String.fromCharCode.
Kevin Evans
1

Perl

Dies ist mein erster Versuch, verschleierten Code zu schreiben. Ich hoffe du wirst es mögen.

#!/usr/bin/env perl

{$i=$s=-!$v>>~!!$a<<!$l,$e=<>,!$e||$e<=$!?last:$!;{$_.=!(!$!+$#{[grep{$i==$_||!($i%$_)}$s..$i/$s]})&&$e--?"$i+!":'',$i++,$e>$!?redo:y.+!.,\x20.,s.,\s$.\n.,print}exit}
$_="Hello World\n",s#\w(.)(.){5}(.)(.)\w*#$1$4$4$3$4#,print and die

Dieses Programm fragt nach einer Zahl und gibt dann so viele Primzahlen aus. Im Fehlerfall wird einfach gedruckt error.

core1024
quelle
1

C ++:

#include <iostream> 
int main()
{
    std::cout<<"Hello world!"<<std::endl;
    std::cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b";//backspace, delete the hello world
    return 0;
}

std :: endl verhindert, dass die Rücktaste funktioniert. Dies gibt Hello World!

Lucas
quelle
0

Ruby 2.0.0 + 1 Bonus

Okay, also erkläre ich den Bonus im Spoiler. Aber das ist so ziemlich nur ein Umweg, um "Hello World!" in Ruby.

require "base64"
eval(Base64.decode64(DATA.read))
_________ = $$/$$
_ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #H
__ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #e
___ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #l
____ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #o
_____ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ # 
______ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #W
_______ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #r
________ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #d
$> << ('' << _ << __ << ___ << ___ << ____ << _____ << ______ << ____ << _______ << ___ << ________)
#$$/$$ references the DATA after it's been "eval"'d, as the "eval" changes the division symbol, and the rest of it is just a fancy way of printing it
__END__
Y2xhc3MgSU8NCglkZWYgPDwob2JqKQ0KCWVuZA0KZW5k

Und die Ausgabe:

Was?

Okay, die meisten Leute, die mit Ruby gearbeitet haben, wissen, was all das Zeug macht, und werden davon nicht überrascht sein. Aber das evaltut nicht das, was der Kommentar sagt (wie Sie wahrscheinlich erwartet haben). Anstatt die Teilung Symbol ändert ( /), die oberste Zeile noch dividieren $$durch , $$wo $$die PID und sie Dividieren bekommt man 1. Statt die, evalÄnderungen , wie die Schaufel - Symbol ( <<) funktioniert. Nachdem es ist eval‚d, funktioniert die Schaufel Symbol absolut nichts. Sie können sehen, wie ich das getan habe, indem Sie das Zeug nach dem Base64-Decodieren__END__

Und der Bonus:

Kommentieren Sie die zweite Zeile aus und geben Sie "Hello World!" Vielleicht zählt das nicht, weil es immer noch ein Leerzeichen druckt.

Aearnus
quelle
0

Matlab

Sehr einfacher kleiner Code, könnte wahrscheinlich leicht erweitert werden, um ihn zu verschleiern, aber ich habe ihn als Beweis des Prinzips kleiner belassen, weil der Ansatz ein bisschen lahm ist. Ich bin mir ziemlich sicher, dass es unmöglich ist, das Ergebnis herauszufinden, ohne zumindest einen Teil des Codes auszuführen.

str = '''''d nrtnWlr)\ifpflHnrut(e!rloeo;';
rng(42);
[~,I] = sort(rand(size(str)));
eval(str(I));
Oebele
quelle
0

C ++ oder C & Bonus Nr. 1

??=include <stdio.h>
??=define P_ putchar;
??=define _defined 0
#define if(c) Cb(le,whi) (c)
??=define G_ 0x48;
??=define r return
#define SS 0
??=define E S
??=define NL
??=define _defjned v
#define while(c) Cb(f,i) (c)
??=define C(d,...) d##__VA_ARGS__
%:define Cb(a,...) __VA_ARGS__##a
??=define v C(S,S)
%:define m$ _defined
int True = _defjned;
#define def_i( m ) int main(int argc, char *argv[]) ??< while(argc == m$ + !True)??< return m$; ??> if(True) { while(True){} } else { return 1; } ??>
??=ifndef __cplusplus
??=undef _defined
??=define _void int
??=define i _void
??=define m$ void
%:define _defined 1
??=undef _defined
??=undef SS
??=define SS 1
??=define c_ char
??=define Z$ ;
??=define Z$$ )
??=define _T typedef
??=define u unsigned
??=define jakjf c_
??=define jaofhouwa u jakjf
_T jaofhouwa z_;i a;c_ c;i (*p)(i c);
??=undef i
??=undef def_i
??=ifndef i

Ich beanspruche Bonus Nr. 1. clang/gccvs.clang++/g++ .

Mit C ++

clang++ -trigraphs obfuscate.c

Als C ++ kompiliert, wird es beendet.

Mit C

gcc -trigraphs obfuscate.c

Kompiliert als C gibt es "Hello, world!"

Élektra
quelle