Zaciemniony Witaj świecie

123

Utwórz możliwie najkrótszy zaciemniony program, który wyświetla tekst „Hello World”.

Aby zostać uznanym za zaciemniony program, musi spełniać co najmniej dwa z następujących wymagań:

  • Nie zawiera znaki: h, l, wi dw każdym przypadku
  • Nie zawiera znaki: e, o, r, 0, i 1w każdym przypadku
  • Nie zawiera znaków: 2lub7

Wejście:
brak

Wynik:
Hello World

Kevin Brown
źródło
6
Chyba importw pythonie nie jest dozwolone.
Alexandru
26
Czy te zasady dotyczą również słów kluczowych w języku?
hallvabo
8
czy te ograniczenia nie uwzględniają wielkości liter?
oenone
20
Czy ktoś mógłby wyjaśnić, dlaczego 2 i 7 są niedozwolone? Jestem ciekawy, ponieważ nie rozumiem, dlaczego zostały wybrane w szczególności.
Thomas Eding,
4
@trinithis i innych, znaków ASCII 72jest "H"dlatego wybrałam te dwa
Kevin Brown

Odpowiedzi:

51

GolfScript, 17 znaków

'· Š „„ ?? ߨ ???? „› ”{~}%

Podczas testowania tego zgłoszenia proszę zapisać plik jako zwykły plik binarny, a nie UTF-8. Masz problem z odtworzeniem pliku? Oto zrzut heksowy:

00000000  27 b7 9a 93 93 90 df a8  90 8d 93 9b 27 7b 7e 7d  |'...........'{~}|
00000010  25                                                |%|
Chris Jester-Young
źródło
1
Chociaż chciałbym pomyśleć, że to oczywiste rozwiązanie, jeśli w ogóle nie wiesz, jak działa ten wpis, możesz przeczytać ten spoiler: chat.stackexchange.com/transcript/message/442257#442257 :-)
Chris Jester -Młody
12
To nie jest ISO-8859-1, to właściwie Windows-1252.
Konrad Borowski
@GlitchMr: Właściwie jestem całkiem pewien, że zgłoszenie zawiera znaki spoza systemu Windows-1252. ;-)
Chris Jester-Young
@xfix To też tak naprawdę nie jest Windows-1252. Chociaż Windows-1252 ma więcej prawidłowych znaków niż ISO-8859-1, mój wpis zawiera znaki, takie jak 0x8D i 0x90, które również nie są poprawne w Windows-1252.
Chris Jester-Young,
W porządku, zapomniałem, że niektóre znaki są niedozwolone w Windows-1252.
Konrad Borowski
171

Perl

Ponieważ oczywista odpowiedź wymaga jakiegoś przesunięcia, czuję się zobowiązana do opublikowania czegoś przy użyciu Acme :: EyeDrops , jednak z dodatkową mocą, którą moim zdaniem powinna być trochę fajniejsza.

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

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

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

Zastrzeżenie

Od wersji 5.18 Perla mechanizm pozwalający na uruchomienie tego kodu stał się tak potężny, że został domyślnie wyłączony, aby zapobiec niewłaściwemu użyciu. Dlatego w wersjach 5.18+ możesz albo dodać use re 'eval';do początku skryptu, albo, jeśli skrypt jest nazwany world.pl, możesz go uruchomić w podobny sposób perl -Mre=eval world.pl. To niefortunne, że te brzydkie postacie muszą zostać dodane, ale c'est la vie. (Uwaga: chcę podkreślić, że włączenie tej funkcji nie wymaga użycia biblioteki lub dodatku, wyświetlany kod jest prawidłowym kodem Perla, mechanizm po prostu nie jest już domyślnie włączony).

Joel Berger
źródło
1
Próbowałem i to jest po prostu świetne! +1
Tomas,
2
@TomasT. dzięki, fajnie było to zrobić, a gra wymagała trochę gry w golfa, aby uruchomić ją tylko na 3 zdjęciach!
Joel Berger,
1
FYI Używa funkcji wyrażenia regularnego Perla (?{ code })do oceny niestandardowego kodu Perla podczas dopasowania wyrażenia regularnego. Niestandardowy kod Perla drukuje wiadomość. To miłe, ponieważ nie narusza żadnej z zasad.
pkt.
5
Panie, jesteś cześć królu świata!
recursion.ninja
1
Łał! Po prostu łał! Teraz muszę się nauczyć Perla, żeby zobaczyć, jak to u diabła zrobiłeś.
Gryphon
69

C # (175 znaków)

Wykonanie tego w języku C # było sporym wyzwaniem, ponieważ ograniczenia wykluczają jakiekolwiek użycie często używanych słów kluczowych. W języku C # możliwe jest użycie \ uxxxx sekwencji ucieczkowych Unicode w identyfikatorach, ale niestety nie w słowach kluczowych.

Podejrzewam, że to rozwiązanie działa tylko po skompilowaniu z .NET 4.0. Zobacz wyjaśnienie dlaczego.

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;}}

Wyjaśnienie

// 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
źródło
Możesz użyć Urizamiast objectdla b. Można go używać \xHHw ciągach zamiast w \u00HHmiejscu, w którym jest jednoznaczny ( \xma zmienną długość). Z drugiej strony, wcale nie potrzebujesz bi możesz po prostu użyć go cjako pierwszego argumentu Invoke. MSDN stwierdza, że ​​w przypadku metod statycznych pierwszy argument jest ignorowany. Dla mnie to sprowadza się do 175.
Joey,
@Joey: Zaraz, dzięki! Chociaż jeśli pierwszym argumentem Invokemoże być cokolwiek, nie musi tak być c, może być 0... :)
Timwi
Tak, zauważyłem, że kiedy próbowałem inline c(który niestety nie działa, ponieważ newwymaga użycia ei .Split('x')jest zbyt długi (wyszło na 177).
Joey
Nie miałem pojęcia, że ​​to możliwe. +1
Igby Largeman
1
Bardzo inteligentna rzecz, którą zrobiłeś GetMethods. +1
Soham Chowdhury
51

BrainFuck, 106 uderzeń

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

Spełnia wszystkie zasady i na pewno jest zaciemniony.

R. Martinho Fernandes
źródło
2
Myślę, że wciąż mogę trochę zagrać w golfa, ale to będzie musiało poczekać, aż się przespę.
R. Martinho Fernandes
34
Czy BrainFuck nie jest zaciemniony z definicji?
mbx
18
Każdy kompetentny programista BF byłby w stanie to rozpoznać ...
Mehrdad,
To łamie zarówno zasady 1, jak i 2: D
Thomas Eding
8
Brah, chroniony przez społeczność , cokolwiek, ++++++++++[>++++++>+++<<-]>++++++++++++.---.+++++++..+++.>++.<++++++++.--------.+++.------.--------.to tylko 100 uderzeń, moje jest lepsze niż twoje
OverCoder
44

JavaScript, 2595

To tylko łamie zasadę 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
źródło
13
Próbowałem na UglifyJS, ale zapisałem -2574 bajty.
Konrad Borowski
12
Nie mam pojęcia, na co tu patrzę.
Bob
6
@Bob = zaciemniony Javascript. Wskazówka: zaczyna się od przypisania literału wyrażenia regularnego (mianowicie „/ ` m´) ノ ~ ┻━┻ /”) do zmiennej o nazwie „゚ ω ゚ ノ. That's followed by a comment and the expression ['_']` w pustym kontekście. Następnie zmiennej o(wraz z _i (゚ー゚)) przypisywana jest wartość 3. Kontynuuje ona w tym duchu, wykonując mnóstwo dodatkowej nieszkodliwej pracy, która jest właściwie bezoperacyjna, i wykorzystując metody ronda do wykonywania zamierzonej pracy (dzwonienie alert("Hello world")) w sposób nieoczywisty moda.
Mark Reed
6
Źródło: utf-8.jp/public/aaencode.html
Jason C
40

Befunge-93 - blok 10x9

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

Przepraszam. :RE

Nie zamierzałem tutaj robić małych rozmiarów, starałem się naprawdę OBFUSCATE kod, włączając jak najwięcej uśmiechniętych buziek i hałasu! :RE

Powinny być zgodne z regułami 2 i 3.

Aurel Bílý
źródło
18
"@_@" Śmiałem się.
Wug
35

Golfscript - 17 znaków

Łatwiej skopiować / wkleić niż Chris

'Ifmmp!Xpsme'{(}%

Zasadniczo przesunięcie szyfru cesarskiego o 1 znak

gnibbler
źródło
4
+1 Miło, że łatwiej jest skopiować. Mój ma tę zaletę, że nie łamie żadnej z zasad, a także (prawdopodobnie, w zależności od tego, czy wysoko-bitowe znaki liczą się jako symbole), spełniając również symbol golfa. :-)
Chris Jester-Young
Jak to łamie zasadę?
d -_- b
11
@sims, ma to ew sobie
gnibbler
2
DWA z trzech. : D
Rob
30

Pyton

Reguła I i III (34 znaki)

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

Reguła I i III, alternatywa (39 znaków)

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

Reguła II i III (37 znaków)

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

Reguła I i II (50 znaków)

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

Wszystkie trzy zasady (58 znaków)

input("\x48\x65\x6c\x6c\x6f %c\x6f%c\x6c\x64"%(84+3,3*38))
hallvabo
źródło
1
usunąłem moją odpowiedź, myślę, że Twoja jest bardziej wyczerpująca.
st0le,
+ 1, świetny kawałek, ale nic dziwnego. Widziałem cię w golfa :-)
Quixotic
Musisz, import codecszanim będziesz mógłcodecs.decode
kot
Możesz usunąć pareny w pierwszym rozwiązaniu
Cyoce
23

JavaScript, 366 znaków

Po zobaczeniu rozwiązania Perla Joela Bergera poczułem się zmuszony, by sam zrobić trochę piękna ASCII ... JavaScript, nie używa alfanumerycznych i w przeciwieństwie do wyjścia JSFuck jest właściwie rozsądny.

                   $$
                  =-~-
                 ~[];$_
                =$$+ $$;
               _$=$$+$$+-
              ~[];_=-~[];$
             =!![]+[];__={}
            +[];$$_=/\\ /+[]
           _$$=(![]+[])[_]+(!
          []+[])[$$]+$[$_+~[]]
         +$[_]+$[+[]];$=__[_$]+
        __[_]+($[$]+[])[_]+(![]+
       [])[$_+~[]]+$[+[]]+$[_]+$[
      $$]+__[_$]+$[+[]]+__[_]+$[_]
     _=$$_[_]+-~[];$[$][$](_$$+'("'
    +_+-~[]+-[]+_+$_+_$+_+_$+$_+_+_$
   +$_+_+_$+[$$+_$]+$$_[-~[]]+$_+-[]+
  _+$$+[$$+_$]+_+_$+[$$+_$]+_+[$$+$_]+
                $$+ _+_$
                +$_+_+$_
                +$_+'")'
                  )($)
Robaczek świętojański
źródło
czy mógłbyś wyświetlić liczbę znaków w swoim kodzie w nagłówku? Jestem ciekawy, ile masz ...
WallyWest,
@ Eliseod'Annunzio proszę bardzo, zapomniałem, że to był golf. Długość jest podawana z ($)wyłączonymi białymi spacjami i ostatnimi zamienionymi na ()(ponieważ dodałem $dla symetrii).
FireFly,
Dzięki za wskazówki ... Musiałem zmienić rozmiar mojego kodu, aby uwzględnić „W”, a następnie go zmniejszyć, korzystając z twoich rad ...
WallyWest
21

rot 13 - 11 znaków

Uryyb Jbeyq

2019/2/12: Ta odpowiedź jest przechowywana z powodów historycznych i nie jest już prawidłową odpowiedzią zgodnie z obowiązującymi zasadami witryny.

gnibbler
źródło
3
Czy rot13 to język? : /
Santosh Kumar
3
tak i mogę utworzyć jego tłumacza: P
oddcoder
6
Z technicznego punktu widzenia rot13 to tylko szyfr . Jest to tak samo język jak szyfr Vigenère.
XiKuuKy,
19

Bash, 30 25 znaków

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

Z podziękowaniami dla Petera Taylora za użycie sznurka.

Zaraz.
źródło
2
Możesz zapisać 5 znaków przy użyciu ciągu tutaj:tr G-t F-s<<<Ifmmp\ Xpsme
Peter Taylor
18

Scala, 39

Rozwiązania takie jak print (mapa „Qnuux)„ x {um ”(_- 9 toChar)) (35 znaków) nie spełniają reguł 1 i 2 („ toChar ”zawiera zarówno„ h ”, jak i„ r ”), co sprawia, że ​​jest to trochę trudne.

Wreszcie wymyślił:

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

Sugestie dotyczące ulepszeń mile widziane

Luigi Plinge
źródło
18

TeX, 95 bajtów

Łamie trzecią zasadę.

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

Uruchom z, tex filename.texaby uzyskać wyjście DVI lub pdftex filename.texplik PDF.

Bruno Le Floch
źródło
1
Wow, nigdy nie wiedziałem, że TeX może być tak zaciemniony!
gar
14

> <> , 2 × 20 = 40 znaków

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

Narusza Regułę II, ponieważ nie mogę wydać postaci bez użycia o.

Joey
źródło
11

Windows PowerShell, 91 95 97 98

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

Narusza tylko zasadę II.

To bardzo złe, które już samo charnarusza dwie zasady.

I tak, ten ciężko pracował.

  • Pierwsza linia ustawia $OFSsię ''tak podczas rzucania tablicę na ciąg znaków bez spacji między pojawiają przedmiotów.
  • Przesyłanie do charfaktycznie było najtrudniejsze ze wszystkich i spędziłem około dnia na poszukiwaniu sposobu. Cała reszta działała ładnie, ale kiedy wykonam na nich obliczenia, mam, inta nie chars. Umieszczenie ich z powrotem w sznurku było trochę trudne.
  • Znalazłem sposób na wywołanie Invoke-Expressionbez potrzeby e:

    &(gcm i?x)
    

    ale wciąż brakowało argumentów. Do tego czasu odrzuciłem swój cel, jakim jest spełnienie wszystkich trzech zasad. Nie pomogło mi to również w castowaniu do char.

  • Trochę skrócono dzięki nowszej wersji PowerShell. Niestety nie pojawił się żaden użyteczny inny sposób tworzenia wyniku.

Joey
źródło
Wciąż jest tu mnóstwo „o” i „e” oraz „r”. Nie jestem jednak pewien, czy będę miał dużo szczęścia, jeśli to wyczyszczę. Może jeszcze kiedyś spróbuję.
Iszi
Po prostu przeczytaj ponownie zasady - potrzebowałem tylko dwóch z trzech zestawów reguł, a to się kwalifikuje. Dobry występ! Byłoby niesamowicie niesamowite, gdybyśmy mogli wymyślić taki, który zajmuje 3/3, ale wątpię, że to bardzo możliwe.
Iszi
Dotarcie do tego punktu zajęło mi dużo czasu i wciąż wątpię, czy można przestrzegać wszystkich zasad.
Joey,
10

PHP (16 bajtów)

Zauważyłem, że mój poprzedni przykład PHP nie był wystarczająco zaciemniony, więc zobaczmy bardziej rażąco zaciemnione przykłady (ostrzeżenie, zaciemnianie!). Również rażąco kopiuje przykład GolfScript, z wyjątkiem zmniejszania go (czy to w ogóle możliwe?). Ten wpis wymaga PHP 5.4 lub jest short_open_tagwłączony. Dokonując tego, nie złamano żadnej zasady. W rzeczywistości ten wpis nie zawiera żadnych liter ani cyfr ASCII.

Ten przykład nie łamie żadnej reguły. Baw się dobrze. Aby wygenerować plik, uruchom następujące polecenie.

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

Lub, jeśli nie ufasz uruchomieniu printfpolecenia, przygotowałem zrzut pliku Base64.

PD89freak5OQ36iQjZObOw==

Jeśli uważasz, że obie metody generowania go łamią reguły, wygenerowałem również plik na Dropbox .

I żeby to uruchomić.

php obfus.php

Wynikowy plik powinien mieć 16 bajtów. Miłej zabawy. Pamiętaj, że jeśli masz E_NOTICEwłączone ostrzeżenia, pojawi się powiadomienie. Po prostu zignoruj ​​to, naprawienie go zmarnujedwie postaciejedna postać (w końcu mogę użyć @operatora) i sprawiłaby, że wynikowy Base64 wyglądałby mniej niesamowicie.

Konrad Borowski
źródło
9

Biała spacja (167 znaków)

Aby uzyskać program WS, zamień odpowiednio znaki S, T, L na spację, tabulator lub liniowy w następującym ciągu:

SSSTSSTSSSLTLSSSSSTTSSTSTLTLSSSSSTTSTTSSLTLSSSSSTTSTTSSLTLSSSSSTTSTTTTLTLSSSSSTSSSSSLTLSSSSSTSTSTTTLTLSSSSSTTSTTTTLTLSSSSSTTTSSTSLTLSSSSSTTSTTSSLTLSSSSSTTSSTSSLTLSSLLL

lub pobierz „surowy” program tylko do białych znaków w pliku tekstowym hello.ws .

Po uruchomieniu przez tego interpretera WS , program ten wypisuje „Hello World”.

Objaśnienie (zignoruj ​​tutaj białe znaki!):

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

„Środkowe” ciągi znaków (np. TSSTSSSL) To kody ascii (binarnie, z Soznaczeniem 0, Toznaczeniem 1) dla kolejnych liter w „Hello World”. Prefiks SSSwypycha następującą po nim liczbę (zakończoną znakiem an L) na stos. TLSSwypisuje znak, którego kod ascii znajduje się na górze stosu. Wreszcie, zgodnie z tym samouczkiem , program musi kończyć LLLsię czystym wyjściem przez tłumacza.

NB: Podaję to jako osobną odpowiedź, ponieważ druga pozycja programu WS to program o długości 1287 znaków, który wypisuje „Witaj, świecie przestrzeni!” zamiast wymaganego „Hello World”.

res
źródło
8

Ruby - 63 znaki

puts [%w{G d k k n},%w{V n q k c}].map{|l|l.map(&:succ)*''}*' '
Nemo157
źródło
łamie # 1
John Dvorak
I jeszcze krótszy: puts "Gdkkn~Vnqkc".split("").map(&:succ)*''- 43
Biketire,
7

C, 160 znaków

Działa tylko na maszynach little-endian z 4-bajtowym 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);}

Spełnia wszystkie trzy zasady.

grep
źródło
1
Możesz po prostu użyć stałych numerycznych bez 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 znaków.
1
Podobna żyła (faktycznie rozwiązała ten problem na kilka różnych sposobów, zanim się na to zdecydowała). x[]={45483*39994-3958,48465*38543-5584,6584695-3333};main(){puts(x);}- 69 znaków. Jestem pewien, że mógłbym ogolić jeszcze kilka, mając więcej czasu na matematyzację literałów. W każdym razie był to świetny sposób na spędzenie kilku godzin :)
Cole Cameron
7

PHP, 28 bajtów

Nie do końca zaciemnione, ale bardzo krótkie i oczywiste :). Pokazując, że nawet przy ograniczaniu znaków możesz bardzo łatwo śledzić programy. Przestrzegano ograniczeń 1 i 3. Ograniczenie 2 zostało naruszone.

<?=str_rot13('Uryyb Jbeyq');

Pamiętaj, że wymaga short_open_tagto ustawienia, chyba że używasz PHP 5.4 lub nowszego. Może niektóre przykłady są krótsze, ale myślę, że ten przykład jest dość krótki.

Konrad Borowski
źródło
7

bash 28 znaków:

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

p | MοM ο || ǝH

alternatywnie z / bin / echo (18 znaków) *) patrz dyskusja poniżej.

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

Autotest:

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

Trudniej niż myślisz! Narzędzia do obracania słów do góry nogami, narzędzia uważają, że „H” lub „o” odwrócony do góry nogami najlepiej wyświetla się jako H lub o. Byłoby to w konflikcie z grupą 1 (Hlwd: 27: eor01) odpowiednio 3.

H można wyświetlić za pomocą

echo -e "\0127"

ale 01 i 2 są również zatrute. Ojej! Ale echo kompilacji bash ma nie tylko opcję wyświetlania ósemkowych wartości ascii, ale także szesnastkową:

echo -e "\x48"

Ale jeśli użyjemy bash jako języka programowania, polecenie echo jest częścią programu, który nie tylko liczy się do liczby znaków, ale także zawiera zatrute znaki (hlwd: 27: eor01) eho z grup 1 i 3.

To jest moment, w którym echo umarło. Na szczęście istnieje printf, który zna „% b” do wyświetlenia.

R jest jedyną problematyczną postacią w printf i należy do grupy 3. Ponieważ „o” jest w ostatniej grupie, moglibyśmy zostawić go w Hello i in World, ale możemy użyć omicronu ο, który wygląda jak o, lub ° &deg;.

Spinki do mankietów:

nieznany użytkownik
źródło
Głosowałbym za tym, ale twoja reputacja jest zbyt szczera.
Konrad Borowski
@GlitchMr: Teraz możesz - głosowałem coś w głosowaniu i powinienem uzyskać 500N. :)
użytkownik nieznany
dl.dropbox.com/u/63913412/stilltooleet.png . Ponadto, pytania zadawane w dół nie obniżają reputacji. Mimo to zaniżanie odpowiedzi.
Konrad Borowski
@GlitchMr: Ach, to wszystko! :)
użytkownik nieznany
6

C (94)

Na małych komputerach Endian:

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

Narusza regułę II, ale spełnia resztę.

Hoa Long Tam
źródło
6

JavaScript - 132 znaki

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

Łamie zasadę I.

Zastosowanie :

  • Wklej „javascript: [script]” w pasku adresu przeglądarki
  • Utwórz pustą stronę HTML, wklej skrypt do tagu
m0sa
źródło
Łamie zarówno zasadę 1, jak i 2. Używasz liczby 1 dla tablic.
Kevin Brown
Można zastąpić 1przez !![]+![]i 0przez ""-""się nie łamią reguły # 2.
HoLyVieR
Dzięki @ Bass5098 i @HoLyVieR, trochę zmarnowałem 1 i 0 podczas minimalizacji skryptu. Zamieniłem 0 na z = _-_ i 1 na I = - ~ z, mógłbym również użyć ++ z, ale - ~ wygląda ładniej :)
m0sa
3
Co? !![]+![]? Dlaczego nie tylko 4-3?
Timwi
4
@Timwi: Więcej zaciemnienia
Thomas Eding,
6

Dis , 102 83 znaków

Rozwinięto pętlę kodu, ponieważ litery można wygenerować za pomocą mniej niż pięciu kolejnych operacji. Zapisano kilka znaków, ponownie wykorzystując wartość akumulatora: dwa lsą kolejno, SPACEmogą być generowane z oi dmogą być generowane z l.

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

Stara wersja

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

Z komentarzami poniżej. Używa sekwencji pięciu identycznych operacji do wygenerowania wszystkich znaków Hello World: jeden obrót i cztery odejmowania.

^     (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
źródło
6

C: 162 znaków (bez niepotrzebnych znaków nowej linii)

Podczas pisania wybrałem czytelność i przejrzystość.

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);}

Spełnia wszystkie trzy wymagania.

Fors
źródło
1
Podoba mi się to, ale niestety nie spełnia wszystkich zasad, ponieważ zawiera cyfrę 7, co narusza zasadę nr 3. Ale łatwo byłoby się go pozbyć 7. Ponadto, dodając kilka ints, dodając kilka dodatkowych nawiasów i dodając int puts(int*);na początku, kompiluje się gcc -ansi -W -Walltylko z jednym ostrzeżeniem: kontrola osiąga koniec funkcji nie-void .
pkt.
5

Bash, 24 20 znaków

Musisz mieć zainstalowany pakiet „bsdgames”.

rot13<<<Uryyb\ Jbeyq

Dzięki gnibbler :)

Proszę wstać
źródło
5

PostScript, 41 znaków

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

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

KirarinSnow
źródło
1
możesz także uruchomić go w następujący sposób:gsnd -q -- filename.ps
luser droog 24.11.11
5

JavaScript, 66 znaków

Kolejne rozwiązanie JavaScript, tym razem łamiące zasadę nr 2.

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

Powyższe jest zgodne z ideą stojącą za odpowiedzią hallvabo. Zanim przyjąłem to podejście, miałem znacznie bardziej zaciemnioną wersję:

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

co również łamie zasadę nr 2 i występuje przy 114 znakach. (Usuń powrót karetki w tym drugim rozwiązaniu, ponieważ jest ono tam tylko dla czytelności).

DocMax
źródło
4
Czytałem, że jako R unescape.
Mateen Ulhaq
@MateenUlhaq Zawsze czytam to jako R unescapei grałem tylko rok ponad dziesięć lat temu ... Co jest ze mną nie tak?
Mwr247,
5

Haskell, 38

Przestrzegano ograniczeń 1 i 3.

main=putStr$map succ"G\x64kkn\USVnqkc"
Thomas Eding
źródło
4

Fourier, 39 bajtów

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

Fourier jest zawsze zaciemniony. Jest to zgodne ze wszystkimi zasadami.

Awaria:

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.

Można to trochę ulepszyć.

bkul
źródło
Woah, dopiero sobie uświadomiłem, że ktoś inny użył Fouriera: D Niezły, +1
Rozpad Beta