Verschleierte Hallo Welt

123

Erstellen Sie das kürzestmögliche verschleierte Programm, das den Text "Hello World" anzeigt.

Um als verschleiertes Programm zu gelten, müssen mindestens zwei der folgenden Anforderungen erfüllt sein:

  • Hat nicht die Zeichen: h, l, wund din jedem Fall
  • Hat nicht die Zeichen: e, o, r, 0, und 1in jedem Fall
  • Enthält nicht die Zeichen: 2oder7

Eingabe:
keine

Ausgabe:
Hello World

Kevin Brown
quelle
6
Ich denke importin Python ist das nicht erlaubt.
Alexandru
26
Gilt diese Regel auch für Sprachschlüsselwörter?
Hallvabo
8
Sind diese Einschränkungen unabhängig von Groß- und Kleinschreibung?
Oenone
20
Könnte jemand erklären, warum 2 und 7 nicht erlaubt sind? Ich bin nur neugierig, da ich nicht verstehe, warum diese besonders ausgewählt wurden.
Thomas Eding
4
@ Trinithis und andere, ASCII-Zeichen 72ist "H", warum ich diese beiden
Kevin Brown

Antworten:

51

GolfScript, 17 Zeichen

'· Š ““ ?? ߨ ???? “›' {~}%

Speichern Sie beim Testen dieser Übermittlung die Datei als Binärdatei und nicht als UTF-8. Probleme beim Neuerstellen der Datei? Hier ist der Hexdump davon:

00000000  27 b7 9a 93 93 90 df a8  90 8d 93 9b 27 7b 7e 7d  |'...........'{~}|
00000010  25                                                |%|
Chris Jester-Young
quelle
1
Obwohl ich es für eine naheliegende Lösung halten möchte, können Sie diesen Spoiler lesen, wenn Sie sich nicht sicher sind, wie dieser Eintrag funktioniert: chat.stackexchange.com/transcript/message/442257#442257 :-)
Chris Jester -Jung
12
Es ist nicht ISO-8859-1, sondern Windows-1252.
Konrad Borowski
@GlitchMr: Ich bin mir ziemlich sicher, dass die Einsendung Zeichen enthält, die sich auch außerhalb von Windows-1252 befinden. ;-)
Chris Jester-Young
@ xfix Es ist wirklich nicht Windows-1252. Obwohl Windows-1252 mehr gültige Zeichen als ISO-8859-1 enthält, enthält mein Eintrag Zeichen wie 0x8D und 0x90, die auch in Windows-1252 nicht gültig sind.
Chris Jester-Young
Zugegeben, ich habe vergessen, dass einige Zeichen in Windows-1252 nicht zulässig sind.
Konrad Borowski
171

Perl

Da die offensichtliche Antwort eine Art Verschiebung verwendet, fühle ich mich verpflichtet, etwas mit Acme :: EyeDrops zu posten , aber mit der zusätzlichen Kraft, die ich für ein wenig unterhaltsamer hielt.

                            ''=~('('."\?".
                        '{'.('`'|'%').('['^'-'
                    ).('`'|'!').  ("\`"|       ','
                 ).'"'.('['^'.').   (((           '['
              ))^'(').('`'|('%')).(                  '{'
            ^'[').('{'^'/').('`'|')')                  .+(
          '`'|'-').('`'|'%').':'.':'.(                   '`'
         ^'(').('`'|')').('{'^')').(                      '`'
       |((  '%'))).('['^'(').'\\'.'"'                       .+(
      '['   ^'.').('['^'(').("\`"|                           ','
     ).(    '`'|'%').('`'|"\%").(                             '['
    ^((      '+'))).'\\'.'"'.';'.                              (((
   (((        '\\')))))).('$').                                 '|'
   .((         '+')).'+'.(';').                                 (((
  (((           '\\'))))      )                                  ).+
  '$'            .'\\'.                                          '"'
 .((               '=')    ). "'".                                "'"
 .((                (';'))).       '\\'                           .((
'@'                   )).('`'|                                     '#'
).+                        '='                                     .+(
'`'                          |+    "\-").(                         '`'
|((                            '!'))).("\["^                       '+'
).+                              '\\'.'{'."\[".                    (((
(((                              '\\'))))))."\$".                  '_'
.((                             ',')).'\\'.'$'.('`'|               '*'
).+                             ','.('^'^('`'|('+'))).(            '^'
^+(                              '`'|'.')).'+'.('^'^('`'           |((
'+'                               )))).'*'.'\\'.('$').(            '`'
 |((                               '*'))).'+'.'+'.']'.            (((
 (((                                '\\'))))))."\}".(             '['
  ^((                                '('))).('['^'+')            .+(
  '`'                                |',').('`'|')')             .+(
   '['                                ^'/').('/').              '/'
   .((                                ',')).'\\'.               '"'
    .+(                               '`'^'(').                (((
     '`'                              ))|'%')                 .+(
      '`'                             |',').                 (((
       '`'                           ))|','                 ).(
         '`'                         |'/')                .+(
          '{'                        ^'['                ).(
            '{'                      ^((               ','
              )))                     .(  (          '`'
                 )|+                   ((         '/'
                    )))                        .+(
                        '['                ^((
                            ')'))).(('`')|

                            ',').('`'|'$')
                        .((        '\\')).'"'.
                    ';'       .  ('['^',').(('`')|
                 '('         ). ('`'|')').('`'|',').(
              '`'              |'%').'('.('^'^('`'|'/'))
            .((             ')')).'\\'.'{'.('`'|'-').('['^
          '"'             ).((   (  '\\'))).'$'.('`'|('*')).
         ';'             .+(      ( ( '`'))|'-').('['^('"')).
       '\\'              .+            '@'.('['^'(').'='.("\`"|
      '-').             ('`'|'!'           ).('['^'+').'\\'.'{'.
     "'".(             '{'^"\[").   ((     "'")).'\\'.'}'.('(').(
    '^'^(             '`'|'.')).'.'.'.'.('^'^('`'|'+')).('^'^('`'|
   '.'))            .')'.';'.('`'|'&').('`'|'/').('['^')').'('.'\\'
   .'@'            .('`'|'#').')'.'\\'.'{'.'\\'."\$".(   '['^"\(").
  '['              .'\\'.'$'.'_'.'-'.'>'.'['.('^'^('`'     |',') ).+
  ']'             .']'.'='.'\\'.'$'.'_'.'-'.'>'."\[".(      '^'^ (((
 '`'              ))|'.')).']'.('`'|')').('`'|('&')).        (((  (((
 (((             '\\'))))))))).'$'.'_'.'-'.'>'.'['.           +(  '^'
^+(              '`'|',')).']'.'<'.'='.('^'^('`'|         (    (   '+'
)))               ).('^'^('`'|'.')).';'.'\\'.'$'.'_'.     (    (   '-'
)).                '>'.'['.('^'^('`'|'/')).']'."\>".       (       (((
(((                  '\\')   )))))).'$'.'_'.'-'.'>'                .((
'['                           )).('^'^('`'|(','))).                ']'
.((                           '?')).'\\'.'$'.('`'|                 '*'
).((                          '+')).'+'.':'.'\\'.                  '$'
.('_').                        '-'.'>'.'['.('^'^                   (((
'`'))|','                       )).']'.'-'."\-".                   (((
'\\'))).+                       '}'.('['^'+').(                   '['^
 "\)").(                        '`'|')').("\`"|              (   '.')
 ).('['^                        '/').'\\'."\"".                   (((
  '\\'))                        ).'\\'.('['^')'    )             .((
  '\\')).                      '@'.('['^"\(").   ((              (((
   '\\'))                       ))).'"'.';'.(   '['        ^    '.'
   ).('['                        ^'(').('`'|    ((        (     ','
    )))).                         ('`'|'%')     .              (((
     '`')                         )|'%').(                    '['
      ^((                          '+')))                    .((
       '('                         )).                      (((
         '^'                                          )   )^(
          '`'                                         |  '/'
            )).                                       ('`'
              |((                                    '%'
                 )))                              .+(
                    '^'                        ^+(
                        '`'                |((
                            '+')))).(')').

                            ';'.('`'|',').
                        ('`'|'!').('['^    '('
                    ).('['^'/').(('{')^        '['
                 ).('`'|')').("\`"|    (          '&'
              )).'\\'.'$'.('`'|"\*").                '='
            .'='.'\\'.'@'.('`'|"\#").                  (((
          '\\'))).'}'.('['^'+').('['^  (                 ')'
         )).('`'|')').('`'|'.').('['^   (                 '/'
       )).'\\'.'"'.'\\'.'\\'.('`'      |+                   '.'
      ).'\\'.'"'.('!'^'+').'"'.'}'.   ')'                    );(
     $:)='.'^'~';$~='@'|'(';$^=')'^                           '['
    ;$/='`'|'.';$,='('^'}';$\="\`"|                            '!'
   ;$:=')'^'}';$~='*'|'`';$^=('+')^                             '_'
   ;($/)    ='&'|'@';$,='['&'~';$\                              =((
  "\,"))^    '|';$:  ='.'^'~'; $~                                =((
  '@'))|     "\(";    $^=')'^                                    '['
 ;($/)=      '`'|       '.';$,                                    =((
 '(')        )^+         '}';$\                                   =((
'`')          )|          "\!";      (           (                 $:)
)=')'         ^+        (   (         (                   (        '}'
))));          (           (          (                            $~)
))=(                    (   (    (        (                        '*'
))))                     )   |  ((      (                          '`'
)))                      ;     $^=         (                       '+'
)^+                       ((    ((  ((     '_'                     )))
)))                                          ;($/)                 =((
'&'                          ) )               |'@';               $,=
'['                                                                &((
 '~'                                      ))   ;                  $\=
 ','                                  ^"\|";  $:                  =((
  '.'                               ))^"\~"; $~=                 '@'
  |((                              '('));$^=')'^       (         '['
   );(                          $/)='`'|"\.";$,=    (           '('
   )^+                         '}';$\='`'|'!';$:                =((
    ')'                        ))^'}';$~='*'|'`'               ;$^
     =((                       '+'))^'_';$/='&'               |((
      '@'                      ));$,   =('[')&               '~'
       ;$\                              =','^               '|'
         ;$:                              =(      ((      '.'
          )))                                   ^+       '~'
            ;$~                               =(       '@'
              )|+                                    '('
                 ;$^                              =((
                    ')'                        ))^
                        '['                ;$/
                            ='`'|('.');#;#

Vorbehalt

Seit Perl Version 5.18 ist der Mechanismus, mit dem dieser Code ausgeführt werden kann, so leistungsfähig, dass er standardmäßig deaktiviert wurde, um Missbrauch zu verhindern. Daher können Sie use re 'eval';in den Versionen 5.18+ entweder das Skript ganz oben einfügen oder, wenn der Name des Skripts angegeben ist world.pl, es wie folgt ausführen perl -Mre=eval world.pl. Es ist bedauerlich, dass diese unansehnlichen Charaktere hinzugefügt werden müssen, aber c'est la vie. (Hinweis: Ich möchte betonen, dass für die Aktivierung dieser Funktion keine Bibliothek oder kein Addon verwendet wird. Der angezeigte Code ist gültiger Perl-Code. Der Mechanismus ist einfach nicht mehr standardmäßig aktiviert.)

Joel Berger
quelle
1
Ich habe es versucht und es ist einfach toll! +1
Tomas
2
@TomasT. danke, es hat Spaß gemacht, und es hat tatsächlich ein bisschen Golf gekostet, um das in nur 3 Bildern zum Laufen zu bringen!
Joel Berger
1
Zu Ihrer Information Es verwendet die Perl-Regexp-Funktion (?{ code }), um benutzerdefinierten Perl-Code während des Regexp-Abgleichs auszuwerten. Der benutzerdefinierte Perl-Code druckt die Nachricht. Es ist schön, weil es keine der Regeln verletzt.
Pkt.
5
Sie, mein Herr, sind der hallo Weltkönig!
recursion.ninja
1
Beeindruckend! Einfach wow! Jetzt muss ich Perl lernen, nur um zu sehen, wie um alles in der Welt Sie das getan haben.
Gryphon
69

C # (175 Zeichen)

Dies in C # zu tun, war eine ziemliche Herausforderung, da die Einschränkungen die Verwendung einer Vielzahl der gebräuchlichen Schlüsselwörter ausschließen. In C # ist es möglich, \ uxxxx Unicode-Escape-Sequenzen in Bezeichnern zu verwenden, aber leider nicht in Schlüsselwörtern.

Ich vermute, dass diese Lösung nur bei der Kompilierung mit .NET 4.0 funktioniert. Siehe Erklärung warum.

using System;struct a{static int Main(){object[]c={"\u0048e\x6c\x6co "+(C\u0068ar)(86+1)+"or\x6c\x64"};typeof(Conso\u006ce).GetMet\u0068o\u0064s()[101].Invoke(c,c);return 0;}}

Erläuterung

// I won’t be able to get anywhere without using “System”.
// Even if I write it as “Syst\u0065m”, it still violates rule 2.
// Therefore, that is the rule we’ll violate.
using System;

// Thus, we can’t use: H L W D 2 7
// We can’t write “class”, so the Main type must be a struct.
struct a
{
    // We can’t write “void”, so Main needs to return an int.
    static int Main()
    {
        // We can’t write “new”, but we can instantiate an array
        // using the initialisation syntax.
        object[] c = {
            "\u0048e\x6c\x6co " + (C\u0068ar) (86 + 1) + "or\x6c\x64"
        };

        // We can use the character escape sequence to write “Console”, but not
        // “Write” because W is \u0057, which contains a 7. Therefore, we have to
        // use Reflection to get it. This relies on the fact that Console.Write(string)
        // is the 102nd method of the type Console in my copy of the framework.
        // Also, the first argument to Invoke can be anything for a static method
        // (needn’t be null). The second one is the actual argument to Console.Write.
        typeof(Conso\u006ce).GetMet\u0068o\u0064s()[101].Invoke(c, c);

        // Since Main returns int, we have to return something.
        return 0;
    }
}
Timwi
quelle
Sie können Urianstelle von objectfür verwenden b. Sie können \xHHZeichenfolgen verwenden, anstatt \u00HHsie eindeutig anzugeben ( \xvariable Länge). Beim zweiten Gedanken brauchst du gar nichts bund kannst es einfach cals erstes Argument wiederverwenden Invoke. MSDN gibt an, dass bei statischen Methoden das erste Argument ignoriert wird. Das bringt es für mich auf 175.
Joey
@ Joey: Whoa, danke! Obwohl, wenn das erste Argument Invokeetwas sein kann, muss es nicht einmal sein c, es könnte sein 0... :)
Timwi
Ja, das habe ich bemerkt, als ich versucht habe, inline zu gehen c(was leider nicht funktioniert, da newes ein erfordert eund .Split('x')zu lang ist (kam um 177 heraus).
Joey
Ich hatte keine Ahnung, dass dies möglich war. +1
Igby Largeman
1
Sehr intelligentes Ding, mit dem du es gemacht hast GetMethods. +1
Soham Chowdhury
51

BrainFuck, 106 Schläge

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.

Erfüllt alle Regeln und ist sicher verschleiert.

R. Martinho Fernandes
quelle
2
Ich glaube, ich kann noch ein bisschen Golf spielen, aber das muss warten, bis ich etwas Schlaf bekomme.
R. Martinho Fernandes
34
Wird BrainFuck nicht durch seine Definition verschleiert?
MBX
18
Jeder kompetente BF-Programmierer würde dies erkennen können ...
Mehrdad
Dies verstößt gegen die Regeln 1 und 2: D
Thomas Eding
8
Brah, Geschützt von der Gemeinschaft , was auch immer, ++++++++++[>++++++>+++<<-]>++++++++++++.---.+++++++..+++.>++.<++++++++.--------.+++.------.--------.ist nur 100 Schläge, meins ist besser als deins
OverCoder
44

Javascript, 2595

Dies verstößt nur gegen Regel 2.

゚ω゚ノ=/`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゚])(゚Θ゚))('_');
Peter Olson
quelle
13
Ich habe es auf UglifyJS ausprobiert, aber es hat -2574 Bytes gespart.
Konrad Borowski
12
Ich habe keine Ahnung, was ich hier sehe.
Bob
6
@Bob = Verschleiertes Javascript. Hinweis: Zunächst wird einer Variablen mit dem Namen "ω ω ゚ ノ. That's followed by a comment and the expression ['_']" im ungültigen Kontext ein reguläres Ausdrucksliteral (dh "/ m m")) ~ ┻━┻ / ") zugewiesen . Dann wird der Variablen o(zusammen mit _und (゚ー゚)) der Wert 3 zugewiesen. Sie wird in diesem Sinne fortgesetzt, indem sie viele zusätzliche harmlose Arbeiten ausführt, die praktisch nicht ausgeführt werden, und auf Umwegen die beabsichtigte Arbeit (Aufruf alert("Hello world")) in nicht offensichtlicher Weise ausführt Mode.
Mark Reed
6
Quelle: utf-8.jp/public/aaencode.html
Jason C
40

Befunge-93 - 10x9 Block

va:)/v<>#<
9A:)."c:P^
>"iqwt\%"^
bv"Mjq"<.<
c>v<-"x^x]
(C:,3>>^:(
$,9^;)|:O]
>5-^-.--.-
^<_#?>@_@<

Es tut uns leid. : D

Ich wollte hier nicht zu klein werden, ich habe versucht, den Code wirklich zu verschleiern , indem ich so viele Smileys und Geräusche wie möglich eingebunden habe ! : D

Sollte mit den Regeln 2 und 3 gehen.

Aurel Bílý
quelle
18
"@_@" Ich lachte.
Wug
35

Golfscript - 17 Zeichen

Einfacher zu kopieren / einfügen als bei Chris

'Ifmmp!Xpsme'{(}%

Grundsätzlich eine um 1 Zeichen verschobene Caesar-Chiffre

Knabberzeug
quelle
4
+1 Schön, dass es einfacher zu kopieren ist. Meins hat den Vorteil, keine der Regeln zu brechen und (wahrscheinlich abhängig davon, ob High-Bit-Zeichen als Symbole gelten) auch Symbolgolf zu erfüllen. :-)
Chris Jester-Young
Wie verstößt das gegen eine Regel?
d -_- b
11
@sims, es hat eine edrin
Knabberzeug
2
ZWEI von den dreien. : D
Rob
30

Python

Regel I & III (34 Zeichen)

print'Uryyb Jbeyq'.decode('rot13')

Regel I & III, alternativ (39 Zeichen)

print"\110e\154\154o %cor\154\144"%~-88

Regel II & III (37 Zeichen)

input("H\x65ll\x64 W\x64%cld"%(3*38))

Regel I und II (50 Zeichen)

input('\x48\x65\x6c\x6c\x6f \x57\x6f\x72\x6c\x64')

Alle drei Regeln (58 Zeichen)

input("\x48\x65\x6c\x6c\x6f %c\x6f%c\x6c\x64"%(84+3,3*38))
hallvabo
quelle
1
habe meine antwort gelöscht, ich finde deins umfassender.
st0le
+ 1, tolles Stück, aber keine Überraschung, ich habe gesehen, wie du Golf spielst :-)
Quixotic
Sie müssen, import codecsbevor Sie könnencodecs.decode
Katze
Sie können die Parens in der ersten Lösung entfernen
Cyoce
23

JavaScript, 366 Zeichen

Nachdem ich die Perl-Lösung von Joel Berger gesehen hatte, fühlte ich mich gezwungen, selbst etwas ASCII-Kunst zu machen ... JavaScript, verwendet keine alphanumerischen Zeichen und hat im Gegensatz zur JSFuck-Ausgabe eine vernünftige Größe.

                   $$
                  =-~-
                 ~[];$_
                =$$+ $$;
               _$=$$+$$+-
              ~[];_=-~[];$
             =!![]+[];__={}
            +[];$$_=/\\ /+[]
           _$$=(![]+[])[_]+(!
          []+[])[$$]+$[$_+~[]]
         +$[_]+$[+[]];$=__[_$]+
        __[_]+($[$]+[])[_]+(![]+
       [])[$_+~[]]+$[+[]]+$[_]+$[
      $$]+__[_$]+$[+[]]+__[_]+$[_]
     _=$$_[_]+-~[];$[$][$](_$$+'("'
    +_+-~[]+-[]+_+$_+_$+_+_$+$_+_+_$
   +$_+_+_$+[$$+_$]+$$_[-~[]]+$_+-[]+
  _+$$+[$$+_$]+_+_$+[$$+_$]+_+[$$+$_]+
                $$+ _+_$
                +$_+_+$_
                +$_+'")'
                  )($)
FireFly
quelle
Könnten Sie bitte die Anzahl der Zeichen in Ihrem Code in der Überschrift anzeigen? Ich bin gespannt, wie viele du hast ...
WallyWest
@ Eliseod'Annunzio los gehts, ich habe vergessen, dass dies Code-Golf war. Die Länge wird mit Leerzeichen angegeben und das letzte ($)verwandelt sich in ()(weil ich $für Symmetrie hinzugefügt habe ).
FireFly
Vielen Dank für Ihre Tipps ... Ich musste meinen Code verkleinern, um das "W" zu berücksichtigen, und ihn dann nach Ihren Ratschlägen
verkleinern
21

rot13 - 11 Zeichen

Uryyb Jbeyq

2019/2/12: Diese Antwort wird aus historischen Gründen aufbewahrt und ist nach den aktuellen Site-Regeln keine gültige Antwort mehr.

Knabberzeug
quelle
3
Ist rot13 eine Sprache? : /
Santosh Kumar
3
ja und ich kann seinen Interpreter erstellen: P
oddcoder
6
Technisch gesehen ist rot13 nur eine Chiffre . Es ist so lang wie eine Vigenère-Chiffre.
XiKuuKy
19

Bash, 30 25 Zeichen

tr G-t F-s<<<Ifmmp\ Xpsme

Vielen Dank an Peter Taylor für die Herestring-Nutzung.

Anon.
quelle
2
Sie können 5 Zeichen mit einer Here-Zeichenfolge speichern:tr G-t F-s<<<Ifmmp\ Xpsme
Peter Taylor
18

Scala, 39

Lösungen wie print ("Qnuux)` x {um "map (_- 9 toChar)) (35 Zeichen) verstoßen gegen die Regeln 1 und 2 (" toChar "enthält sowohl" h "als auch" r ") etwas zäh.

Endlich ist es soweit:

print("䠀攀氀氀漀 圀漀爀氀搀"map(_.reverseBytes))

Verbesserungsvorschläge willkommen

Luigi Plinge
quelle
18

TeX, 95 Bytes

Verstößt gegen die dritte Regel.

\^^5pp^^%^^2^^#^^!^^3^^%{^^(}^^%^^,^^,^^/
\^^5pp^^%^^2^^#^^!^^3^^%{^^7}^^/^^2^^,^^$!
\^^%^^.^^$

Führen Sie mit aus tex filename.tex, um eine DVI-Ausgabe oder pdftex filename.texein PDF zu erhalten.

Bruno Le Floch
quelle
1
Wow, ich wusste nie, dass TeX so verschleiert sein kann!
Gar
14

> <> , 2 × 20 = 40 Zeichen

'mu{x`)xuunQ'>9-o?v;
            ;^?o-9< 

Verstößt gegen Regel II, da ich kein Zeichen ohne Verwendung von ausgeben kann o.

Joey
quelle
11

Windows PowerShell, 91 95 97 98

($OFS='')+('Qnuux)`x{um'|% t*y|%{"[convert]::"+([convert]|gm -s t*r).name+"($($_-9))"|iex})

Verstößt nur gegen Regel II.

Es ist sehr böse, dass bereits charzwei Regeln allein verletzt werden.

Und yikes, dieser war schwer zu arbeiten.

  • In der ersten Zeile wird festgelegt $OFS, ''dass beim Umwandeln eines Arrays in eine Zeichenfolge keine Leerzeichen zwischen Elementen angezeigt werden.
  • Das Casting charwar der schwierigste Teil von allen und ich verbringe einen ganzen Tag damit, nach einem Weg zu suchen. Ich habe den ganzen Rest gut zum Laufen gebracht, aber sobald ich Berechnungen an ihnen vorgenommen habe, habe ich ints, nicht chars. Diese wieder in eine Schnur zu stecken, war ein bisschen schwierig.
  • Ich habe einen Weg gefunden, um Invoke-Expressionohne das eauch aufzurufen :

    &(gcm i?x)
    

    Dem fehlten aber noch die Argumente. Und ich habe mein Ziel, alle drei Regeln zu erfüllen, bereits verworfen. Auch hat es mir beim Casting nicht besonders geholfen char.

  • Mit einer neueren PowerShell-Version etwas verkürzt. Leider ergab sich jedoch keine sinnvolle andere Art, das Ergebnis zu erzielen.

Joey
quelle
Es gibt immer noch viele "o" und "e" und ein "r". Ich bin mir nicht sicher, ob ich viel mehr Glück haben würde, wenn ich das sauber mache. Vielleicht muss ich es noch einmal versuchen.
Iszi
Lesen Sie die Regeln einfach noch einmal durch - es werden nur zwei der drei erfüllten Regelsätze benötigt, und dies gilt auch. Gute Show! Wäre super, wenn wir eine finden könnten, die 3/3 dauert, aber ich bezweifle, dass das sehr gut möglich ist.
Iszi
Ich brauchte viel Zeit, um an diesen Punkt zu gelangen, und ich bezweifle immer noch, dass es möglich ist, alle Regeln zu befolgen.
Joey
10

PHP (16 Bytes)

Ich habe bemerkt, dass mein vorheriges PHP-Beispiel nicht genug verschleiert war, also sehen wir uns unverhohlenere Beispiele an (Warnung, Verschleierung!). Außerdem wird eklatant GolfScript kopiert, außer es kleiner zu machen (ist es überhaupt möglich?). Dieser Eintrag erfordert entweder PHP 5.4 oder short_open_tagaktiviert. Dabei wurde keine Regel verletzt. Tatsächlich enthält dieser Eintrag keine ASCII-Buchstaben oder -Ziffern.

In diesem Beispiel wird keine der Regeln verletzt. Habe Spaß. Führen Sie den folgenden Befehl aus, um eine Datei zu generieren.

printf "<?=~\xb7\x9a\x93\x93\x90\xdf\xa8\x90\x8d\x93\x9b;" > obfus.php

Für den Fall, dass Sie dem Ausführen von printfBefehlen nicht vertrauen , habe ich einen Base64-Dump der Datei vorbereitet.

PD89freak5OQ36iQjZObOw==

Wenn Sie denken, dass beide Methoden zum Generieren Regeln brechen, habe ich auch eine Datei auf Dropbox generiert .

Und es laufen zu lassen.

php obfus.php

Die resultierende Datei sollte 16 Bytes haben. Viel Spaß beim Laufen. Bitte beachten Sie, dass bei E_NOTICEaktivierten Warnungen ein Hinweis angezeigt wird. Ignoriere es einfach, es zu reparieren würde verschwendenzwei Zeichenein Zeichen (ich kann schließlich @Operator verwenden) und würde das Ergebnis von Base64 weniger gut aussehen lassen.

Konrad Borowski
quelle
9

Leerzeichen (167 Zeichen)

Um das WS-Programm zu erhalten, ersetzen Sie S, T, L durch ein Leerzeichen, einen Tabulator oder einen Zeilenumbruch in der folgenden Zeichenfolge:

SSSTSSTSSSLTLSSSSSTTSSTSTLTLSSSSSTTSTTSSLTLSSSSSTTSTTSSLTLSSSSSTTSTTTTLTLSSSSSTSSSSSLTLSSSSSTSTSTTTLTLSSSSSTTSTTTTLTLSSSSSTTTSSTSLTLSSSSSTTSTTSSLTLSSSSSTTSSTSSLTLSSLLL

oder laden sie das "raw" whitespace-only programm in der textdatei hello.ws herunter .

Bei Ausführung durch diesen WS-Interpreter gibt dieses Programm "Hello World" aus.

Erklärung (ignorieren Sie das Leerzeichen hier!):

SSS TSSTSSSL TLSS  <-- output H (ascii code 72 in decimal, 1001000 in binary) 
SSS TTSSTSTL TLSS  <-- output e (ascii code 101 in decimal, 1100101 in binary) 
SSS TTSTTSSL TLSS  <-- etc
SSS TTSTTSSL TLSS
SSS TTSTTTTL TLSS
SSS TSSSSSL TLSS
SSS TSTSTTTL TLSS
SSS TTSTTTTL TLSS 
SSS TTTSSTSL TLSS 
SSS TTSTTSSL TLSS
SSS TTSSTSSL TLSS 
LLL                <-- end the program

Die "mittleren" Zeichenfolgen (z. B. TSSTSSSL) sind die ASCII-Codes (in Binärform, mit der SBezeichnung 0, mit der TBezeichnung 1) für die aufeinanderfolgenden Buchstaben in "Hello World". Das Präfix SSSschiebt die darauf folgende (mit einem abgeschlossene L) Nummer auf den Stapel. TLSSgibt das Zeichen aus, dessen ASCII-Code sich oben auf dem Stapel befindet. Schließlich muss nach diesem Tutorial ein Programm mit enden, damit LLLder Interpreter es sauber beenden kann .

NB: Ich gebe dies als separate Antwort ein, da der andere WS-Programmeintrag ein Programm mit 1287 Zeichen ist, das "Hallo Welt der Räume!" anstelle der erforderlichen "Hallo Welt".

res
quelle
8

Ruby - 63 Zeichen

puts [%w{G d k k n},%w{V n q k c}].map{|l|l.map(&:succ)*''}*' '
Nemo157
quelle
bricht jedoch # 1
John Dvorak
Und noch kürzer: puts "Gdkkn~Vnqkc".split("").map(&:succ)*''- 43
Biketire
7

C 160 Zeichen

Funktioniert nur auf Little-Endian-Rechnern mit 4-Byte-Int .:

main(){int a='a',b=a/a,c=b+b,f=c+c,g=f+f,i=g+g,j=i*i,k=j*j,m=a+g+b+c,n=m+b+c;int p[]={a+g-b+(a+f)*j+m*k*(j+b),n+i*c*j+k*(n+g+n*j),a+i+b+m*j+(a+f-b)*k};puts(p);}

Erfüllt alle drei Regeln.

grep
quelle
1
Sie könnten einfach numerische Konstanten ohne 0,1,2,7: p[];main(){p={(5*5*5*5*5*64+96696)*(443+5688),(5*3*4*3+4-3)*(66*45*6-6*6-4+3)*8‌​3*(3+4),6544494+36868};puts(p);}- 111 Zeichen verwenden.
1
Eine ähnliche Ader (tatsächlich wurde das Problem auf verschiedene Arten angegangen, bevor man sich darauf einließ). x[]={45483*39994-3958,48465*38543-5584,6584695-3333};main(){puts(x);}- 69 Zeichen. Ich bin sicher, ich könnte ein paar mehr abnehmen, wenn ich mehr Zeit hätte, um die Literale noch ein bisschen besser zu verstehen. War eine lustige Art, ein paar Stunden zu verbringen, sowieso :)
Cole Cameron
7

PHP, 28 Bytes

Nicht genau verschleiert, aber sehr kurz und offensichtlich :). Dies zeigt, dass Sie selbst beim Begrenzen von Zeichen sehr einfach Programme folgen können. Die Bedingungen 1 und 3 folgten. Einschränkung 2 wurde missbraucht.

<?=str_rot13('Uryyb Jbeyq');

Beachten Sie, dass dies short_open_tagfestgelegt werden muss, es sei denn, Sie verwenden PHP 5.4 oder höher. Vielleicht sind einige Beispiele kürzer, aber ich denke, dass dieses Beispiel ziemlich kurz ist.

Konrad Borowski
quelle
7

Bash 28 Zeichen:

printf 'p|ɹ°M ο||ǝ%b'"\x48"

p | ɹοMO || ǝH

alternativ mit / bin / echo (18 Zeichen) *) siehe Diskussion unten.

/bin/echo -e 'p|ɹοM ο||ǝ\0110'

Selbsttest:

echo "printf 'p|ɹοM ο||ǝ%b' "\x48"" | egrep -i "[^hlwd27eor01]"

Härter als gedacht! Werkzeuge, um Wörter auf den Kopf zu stellen. Die Werkzeuge denken, ein auf den Kopf gestelltes 'H' oder 'o' wird am besten als H oder o angezeigt. Dies würde im Widerspruch zu Gruppe 1 (Hlwd: 27: eor01) bzw. 3 stehen.

H kann mit angezeigt werden

echo -e "\0127"

aber 01 und 2 sind auch vergiftet. Gee! Das Bash-Build-Echo bietet jedoch nicht nur die Möglichkeit, oktale ASCII-Werte anzuzeigen, sondern auch hexadezimal:

echo -e "\x48"

Wenn wir jedoch bash als Programmiersprache verwenden, ist der Befehl echo Teil des Programms, der nicht nur zur Anzahl der Zeichen zählt, sondern auch die vergifteten Zeichen (hlwd: 27: eor01) eho aus den Gruppen 1 und 3 enthält.

Dies ist also der Moment, in dem das Echo gestorben ist. Zum Glück gibt es printf, das "% b" anzeigt.

Das r ist das einzige problematische Zeichen in printf und gehört zur Gruppe 3. Da 'o' zur letzten Gruppe gehört, können wir es in Hello und in World belassen , aber wir können das Omikron ο verwenden, das wie ein o oder aussieht ° &deg;.

Links:

Benutzer unbekannt
quelle
Würde dies befürworten, aber Ihr Ruf ist zu leet.
Konrad Borowski
@GlitchMr: Jetzt kannst du - ich habe etwas abgelehnt und sollte 500N sehen. :)
Benutzer unbekannt
dl.dropbox.com/u/63913412/stilltooleet.png . Downvoting-Fragen beeinträchtigen auch nicht das Ansehen. Downvoting-Antworten tut das trotzdem.
Konrad Borowski
@GlitchMr: Ah, das war's! :)
Benutzer unbekannt
6

C (94)

Auf kleinen Endian-Maschinen:

main(){int i[]={1819043144,((0x1bc5c81b|1<<0x14)*4)+3,0xa646c00|(0x39<<1),0};printf("%s",i);}

Verstößt gegen Regel II, erfüllt aber den Rest.

Hoa Long Tam
quelle
6

JavaScript - 132 Zeichen

(_=(_=[][(f=!!(_='')+_)[3]+(b=({}+_)[(I=-~(z=_-_))])+($=(c=(d=!_+_)[I])+d[z])])())[f[I]+'l'+(a=d[3])+$]("H"+a+'ll'+b+' W'+b+c+'ld')

Pausen regiere ich

Verwendung :

  • Fügen Sie "javascript: [script]" in die Adressleiste des Browsers ein
  • Erstellen Sie eine leere HTML-Seite und fügen Sie das Skript in ein Tag ein
m0sa
quelle
Verstößt gegen Regel 1 und 2. Sie verwenden die Nummer 1 für die Arrays.
Kevin Brown
Sie können ersetzen 1durch !![]+![]und 0durch ""-""brechen nicht Regel # 2.
HoLyVieR
Vielen Dank an @ Bass5098 und @HoLyVieR, ich habe die 1 und 0 beim Minimieren des Skripts irgendwie verpasst. Ich habe 0 durch z = _-_ und 1 durch I = - ~ z ersetzt, ich könnte auch ++ z verwenden, aber - ~ sieht
besser
3
Huh? !![]+![]? Warum nicht einfach 4-3?
Timwi
4
@ Timwi: Mehr Verschleierung
Thomas Eding
6

Dis , 102 83 Zeichen

Entrollte die Codeschleife, da die Buchstaben mit weniger als fünf aufeinanderfolgenden Operationen erzeugt werden können. Durch Wiederverwendung des Akkumulatorwerts wurden einige Zeichen gespeichert: Zwei lsind aufeinanderfolgend, SPACEkönnen aus generiert werden ound dkönnen aus generiert werden l.

*>|||{>|||{>||{{>|{|||{>||{>|{>|||{>||{||{!!>**_!!}|_}!^__}|__>*__}|_}|_>!!|_}!^__!

Alte Version

^}!>^^_^!__!>_^!^^**_^!^^**_
^_!{**_^__!{>_^__{>>!^_!{**_
^_!>^*_^!^^**_^_^^**_*______
___________>||||{^

Mit Kommentaren unten. Es verwendet eine Folge von fünf identischen Operationen, um alle Zeichen zu erzeugen Hello World: eine Drehung und vier Subtraktionen.

^     (move code pointer to data pointer value '^')
}!>^^ (store 'H' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
!__!> (store 'e' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
!^^** (store 'l' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
!^^** (store 'l' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
_!{** (store 'o' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
__!{> (store ' ' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
__{>> (store 'W' in accumulator)
!     (program termination)
^     (data pointer value used by code pointer jump)
_!{** (store 'o' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
_!>^* (store 'r' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
!^^** (store 'l' in accumulator)
_     (no-op)
^     (data pointer value used by code pointer jump)
_^^** (store 'd' in accumulator)
_     (no-op)
*     (data pointer value used by code pointer jump to reach '!' between 'W' and 'o')
________________ (no-ops)
_     (no-op, address '^')
>|||| (rotate data value and perform four subtractions)
{     (print value in accumulator)
^     (move code pointer to data pointer value '^' except for the last jump '*')
Mark Jayxcela
quelle
6

C: 162 Zeichen (ohne unnötige Zeilenumbrüche)

Ich habe mich beim Schreiben für Lesbarkeit und Transparenz entschieden.

a[3],b;main(){b=99
+9;b+=b<<8;b=b<<8|
97|4;b=b<<8|64|8;a
[3^3]=b;b=78+33<<8
;b+=87;b=b<<8|35^3
;b=b<<8|64|47;a[5^
4]=b;b=97+3<<8;b+=
99+9;b=b<<8|66|48;
a[6^4]=b;puts(a);}

Es erfüllt alle drei Anforderungen.

Fors
quelle
1
Ich mag das, aber leider erfüllt es nicht alle Regeln, weil es die Ziffer enthält 7, die Regel # 3 verletzt. Aber es wäre leicht, sie loszuwerden 7. Durch Hinzufügen einiger ints und einiger zusätzlicher Klammern sowie durch Hinzufügen int puts(int*);am Anfang wird gcc -ansi -W -Wallnur mit einer einzigen Warnung kompiliert : Die Steuerung erreicht das Ende der nicht ungültigen Funktion .
Pkt
5

Bash, 24 20 Zeichen

Sie müssen das Paket "bsdgames" installiert haben.

rot13<<<Uryyb\ Jbeyq

Danke gnibbler :)

PleaseStand
quelle
5

PostScript, 41 Zeichen

<64><~+BNK%C]~><48656c6c6f>3{print}repeat

Verwendungszweck: $ gs -q -dNOPROMPT -dNODISPLAY filename.ps

KirarinSchnee
quelle
1
Sie könnten es auch so ausführen:gsnd -q -- filename.ps
luser droog
5

JavaScript, 66 Zeichen

Eine weitere JavaScript-Lösung, die diesmal gegen Regel 2 verstößt.

top[(U=unescape)('a%6cert')](U('%48e%6c%6co %5'+(6+1)+'or%6c%64'))

Das Obige folgt dem Konzept hinter der Antwort von hallvabo. Bevor ich zu diesem Ansatz kam, hatte ich die wohl eher verschleierte Version:

top[8680439[n='toString'](30)]((16+1)[n](z=8*4)[u='toUpperCase']()
+15960[n](33)+'o '+z[n](33)[u]()+1155505[n](36))

das bricht auch Regel # 2 und kommt bei 114 Zeichen. (Entfernen Sie den Wagenrücklauf in dieser zweiten Lösung, da er nur der Lesbarkeit halber vorhanden ist.)

DocMax
quelle
4
Ich habe das als R gelesen unescape.
Mateen Ulhaq
@MateenUlhaq Ich habe es immer als R gelesen unescapeund vor über einem Jahrzehnt nur ein Jahr lang gespielt ... Was ist los mit mir?
Mwr247,
5

Haskell, 38

Die Bedingungen 1 und 3 folgten.

main=putStr$map succ"G\x64kkn\USVnqkc"
Thomas Eding
quelle
4

Fourier, 39 Bytes

8*9a99^^a+6^aa~q+3a33va86^aq+3a+3aqa-8a

Fourier ist immer verschleiert. Dies folgt allen Regeln.

Nervenzusammenbruch:

8*9a    Set the accumulator to 8, multiply it by 9, and print the 
        corresponding ASCII code.

99^^a   Set the accumulator to 99, increment it twice, and print the
        corresponding ASCII code.

+6^aa   Add 6 to the accumulator, increment it, and print the
        corresponding ASCII code twice.

~q      Set the variable q to the current value of the accumulator.

+3a     Add 3 to the accumulator and... I think you get the idea.

33va    Set the accumulator to 33, decrement it, and print ASCII.

86^a    Yes, okay, I think it's obvious by this point.

q+3a    Set the accumulator to the value of q (earlier set to 108),
        add 3, and print ASCII.

+3a     ...

qa      Invoke q again and print ASCII.

-8a     Subtract 8 from the accumulator and print ASCII.

Dies könnte vielleicht ein wenig verfeinert werden.

bkul
quelle
Woah, ich habe gerade erst gemerkt, dass jemand anderes Fourier: D verwendet hat. Nice one, +1
Beta Decay