Запутанный Hello World


123

Создайте максимально короткую запутанную программу, которая отображает текст «Hello World».

Чтобы считаться запутанной программой, она должна отвечать как минимум двум из следующих требований:

  • Не содержит символы: h, l, wи dв любом случае
  • Не содержит символы: e, o, r, 0, и 1в любом случае
  • Не содержит символов: 2или7

Вход:
нет

Выход:
Hello World


6
Я думаю, importв питоне не допускается.
Александру

26
Применяются ли эти правила и к ключевым словам языка?
hallvabo

8
эти нечувствительные к регистру ограничения?
Энон

20
Может кто-нибудь объяснить, почему 2 и 7 не допускаются? Мне просто любопытно, потому что я не понимаю, почему именно они были выбраны.
Томас Эдинг

4
@trinithis и другие, персонаж ASCII 72- "H"вот почему я выбрал этих двоих
Кевин Браун,

Ответы:


51

GolfScript, 17 символов

«· С««?? ???? Ss«> '{~}%

При тестировании этого представления, пожалуйста, сохраните файл как обычный двоичный файл, а не UTF-8. Возникли проблемы при воссоздании файла? Вот шестнадцатеричный код этого:

00000000  27 b7 9a 93 93 90 df a8  90 8d 93 9b 27 7b 7e 7d  |'...........'{~}|
00000010  25                                                |%|

1
Хотя я хотел бы думать, что это очевидное решение, если вам вообще непонятно, как работает эта запись, вы можете прочитать этот спойлер: chat.stackexchange.com/transcript/message/442257#442257 :-)
Крис

12
Это не ISO-8859-1, это на самом деле Windows-1252.
Конрад Боровски,

@GlitchMr: На самом деле я почти уверен, что представление содержит символы, которые находятся за пределами Windows-1252. ;-)
Крис Шестер-Янг,

@xfix Это и правда не Windows-1252. Хотя Windows-1252 содержит больше допустимых символов, чем ISO-8859-1, моя запись содержит символы, такие как 0x8D и 0x90, которые также недопустимы в Windows-1252.
Крис Джестер-Янг

Справедливости ради, забыл, что некоторые символы запрещены в Windows-1252.
Конрад Боровски,

171

Perl

Поскольку в очевидном ответе используется какое-то смещение, я чувствую себя обязанным опубликовать что-то с помощью Acme :: EyeDrops , однако с той дополнительной мощью, которую я считал моей, должно быть немного веселее.

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

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

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

Предостережение

Начиная с версии Perl 5.18 механизм, позволяющий запускать этот код, стал настолько мощным, что по умолчанию его отключили, чтобы предотвратить злоупотребление. Поэтому в версиях 5.18+ вы можете либо добавить use re 'eval';в начало скрипта, либо, если скрипт назван, world.plвы можете запустить его как perl -Mre=eval world.pl. К сожалению, эти неприглядные персонажи должны быть добавлены, но c'est la vie. (Примечание: я хочу подчеркнуть, что включение этой функции не использует какую-либо библиотеку или дополнение, отображаемый код является допустимым кодом Perl, механизм просто больше не включен по умолчанию).


1
Я попробовал, и это просто здорово! +1
Томас

2
@TomasT. спасибо, это было весело, и на самом деле понадобилось немного игры в гольф, чтобы заставить его работать только в 3 фотографиях!
Джоэл Бергер

1
К сведению, он использует функцию регулярного выражения Perl (?{ code })для оценки пользовательского кода Perl во время сопоставления регулярного выражения. Пользовательский код Perl печатает сообщение. Это приятно, потому что это не нарушает никаких правил.
оч.

5
Вы, сэр, привет король мира!
recursion.ninja

1
Вау! Просто вау! Теперь мне нужно изучить Perl, просто чтобы увидеть, как на земле ты это сделал.
Грифон

69

C # (175 символов)

Это было довольно сложно сделать в C #, потому что ограничения не позволяют использовать довольно много общих ключевых слов. В C # возможно использование escape-последовательностей Unicode в идентификаторах, но, к сожалению, не в ключевых словах.

Я подозреваю, что это решение работает только при компиляции против .NET 4.0. Смотрите объяснение почему.

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

объяснение

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

Вы можете использовать Uriвместо objectдля b. Вы можете использовать \xHHв строках вместо того, \u00HHгде оно однозначно ( \xпеременной длины). Во-вторых, вам не нужно bвообще, и вы можете просто использовать cв качестве первого аргумента Invoke. MSDN утверждает, что для статических методов первый аргумент игнорируется. Это снижает его до 175 для меня.
Джои

@Joey: Ого, спасибо! Хотя, если первым аргументом Invokeможет быть что угодно, это даже не обязательно c, это может быть 0... :)
Timwi

Да, заметил, что когда я попытался встроить c(что, к сожалению, не работает, так как newтребует eи .Split('x')слишком долго (вышел в 177).
Джои

Я понятия не имел, что это возможно. +1
Игби Большой Человек

1
Очень умная вещь, которую вы сделали с GetMethods. +1
Сохам Чоудхури

51

BrainFuck, 106 ударов

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

Удовлетворяет всем правилам, и это наверняка запутано.


2
Я думаю, что все еще могу немного поиграть в гольф, но мне придется подождать, пока я немного посплю.
Р. Мартиньо Фернандес

34
Разве BrainFuck не запутан его определением?
mbx

18
Любой компетентный программист BF сможет распознать это ...
Mehrdad

Это нарушает правила 1 и 2: D
Томас Эдинг

8
Брах, Защищено сообществом , что угодно, ++++++++++[>++++++>+++<<-]>++++++++++++.---.+++++++..+++.>++.<++++++++.--------.+++.------.--------.всего 100 ударов, мой лучше, чем твой
OverCoder

44

Javascript, 2595

Это только нарушает правило 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゚])(゚Θ゚))('_');

13
Я попробовал это на UglifyJS, но это сэкономило -2574 байта.
Конрад Боровски,

12
Я понятия не имею, на что я здесь смотрю.
Боб

6
@Bob = запутанный Javascript. Подсказка: она начинается с присвоения литерала регулярного выражения (а именно '/ ` m´) ノ ~ ┻━┻ /') переменной с именем `゚ ω ゚ ノ. That's followed by a comment and the expression ['_']` в пустом контексте. Затем переменной o(вместе с _и (゚ー゚)) присваивается значение 3. Она продолжается в том же духе, выполняя множество дополнительных безвредных действий, которые фактически не выполняются, и используя обходные пути для выполнения намеченной работы (вызова alert("Hello world")) в неочевидном мода.
Марк Рид


40

Befunge-93 - блок 10х9

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

Сожалею. : D

Я не собирался делать небольшие размеры здесь, я пытался действительно ОБОСНОВАТЬ код, включая как можно больше смайликов и шума! : D

Должно идти с правилами 2 и 3.


18
"@_@" Я смеялся.
Вуг

35

Golfscript - 17 символов

Проще скопировать / вставить, чем Крис

'Ifmmp!Xpsme'{(}%

В основном Цезарь шифр сдвигается на 1 символ


4
+1 Хорошо, что проще копировать. Мое преимущество состоит в том, что они не нарушают ни одно из правил, а также (возможно, в зависимости от того, считаются ли символы с высоким битом символами) и выполняют символьный гольф. :-)
Крис Шутер-Янг

Как это нарушает правило?
d -_- б

11
@sims, он имеет eв нем
gnibbler

2
ДВА из трех. : D
Роб

30

питон

Правило I и III (34 символа)

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

Правило I и III, альтернатива (39 символов)

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

Правило II и III (37 символов)

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

Правило I и II (50 символов)

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

Все три правила (58 символов)

input("\x48\x65\x6c\x6c\x6f %c\x6f%c\x6c\x64"%(84+3,3*38))

1
удалил мой ответ, я думаю, что ваш более полный.
st0le

+1, отличная фигура, но не удивительно, я видел, как вы играете в гольф :-)
Quixotic

Тебе нужно, import codecsпрежде чем ты сможешьcodecs.decode
кошка

Вы можете удалить паренов в первом решении
Cyoce

23

JavaScript, 366 символов

Увидев решение Perl Джоэля Бергера, я почувствовал, что должен сам сделать некоторую красивость в искусстве ASCII ... JavaScript, не использует буквенно-цифровые символы, и, в отличие от вывода JSFuck, он на самом деле имеет разумные размеры.

                   $$
                  =-~-
                 ~[];$_
                =$$+ $$;
               _$=$$+$$+-
              ~[];_=-~[];$
             =!![]+[];__={}
            +[];$$_=/\\ /+[]
           _$$=(![]+[])[_]+(!
          []+[])[$$]+$[$_+~[]]
         +$[_]+$[+[]];$=__[_$]+
        __[_]+($[$]+[])[_]+(![]+
       [])[$_+~[]]+$[+[]]+$[_]+$[
      $$]+__[_$]+$[+[]]+__[_]+$[_]
     _=$$_[_]+-~[];$[$][$](_$$+'("'
    +_+-~[]+-[]+_+$_+_$+_+_$+$_+_+_$
   +$_+_+_$+[$$+_$]+$$_[-~[]]+$_+-[]+
  _+$$+[$$+_$]+_+_$+[$$+_$]+_+[$$+$_]+
                $$+ _+_$
                +$_+_+$_
                +$_+'")'
                  )($)

не могли бы вы показать количество символов в вашем коде в заголовке? Мне любопытно посмотреть, сколько у тебя это получилось ...
WallyWest

@ Eliseod'Annunzio вот и ты, я забыл, что это был код-гольф. Длина указана с пропуском пробела и последним ($)превращением в ()(потому что я добавил $симметрию).
FireFly

Спасибо за ваши советы ... Мне пришлось изменить размер моего кода, чтобы учесть "W", а затем сжать его, используя ваш совет ...
WallyWest

21

rot13 - 11 символов

Uryyb Jbeyq

2019/2/12: этот ответ хранится по историческим причинам и больше не является действительным в соответствии с действующими правилами сайта.


3
Является ли rot13 языком? : /
Сантош Кумар

3
да и я могу создать его интерпретатор: P
oddcoder

6
Технически, rot13 - это просто шифр . Это такой же язык, как и шифр Vigenère.
XiKuuKy

19

Скала, 39

Такие решения, как print ("Qnuux)` x {um "map (_- 9 toChar)) (35 символов), нарушают правила 1 и 2 (" toChar "содержит как" h ", так и" r "), что делает это немного жестко

Наконец придумали это:

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

Предложения по улучшению приветствуются


19

Баш, 30 25 символов

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

С благодарностью Питеру Тейлору за использование Herestring.


2
Вы можете сохранить 5 символов, используя следующую строку:tr G-t F-s<<<Ifmmp\ Xpsme
Питер Тейлор

18

TeX, 95 байт

Нарушает третье правило.

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

Запустите с, tex filename.texчтобы получить вывод DVI или pdftex filename.texPDF.


1
Ничего себе, никогда не знал, что TeX может быть настолько запутанным!
Гар

14

> <> , 2 × 20 = 40 символов

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

Нарушает Правило II, так как я не могу вывести символ без использования o.


11

Windows PowerShell, 91 95 97 98

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

Нарушает только Правило II.

Это очень зло, которое уже само по себе charнарушает два правила.

И, да, с этим трудно было работать.

  • Первая строка устанавливает $OFSдля ''так при заливке массива в строку без пробелов появится между элементами.
  • Кастинг на charсамом деле был самой сложной частью, и я провожу целый день в поисках пути. У меня все остальное работает хорошо, но как только я делаю расчеты, я получаю ints, а не chars. Положить их обратно в строку было довольно сложно.
  • Я нашел способ вызывать Invoke-Expressionбез необходимости e:

    &(gcm i?x)
    

    но этому все еще не хватало аргументов. И я уже отбросил свою цель - утвердить все три правила. Также это не особенно помогло мне в кастинге char.

  • Немного укорочен с новой версией PowerShell. Однако, к сожалению, никакой другой полезный способ создания результата не появился.


Здесь все еще много «о» и «е», а также «р». Не уверен, что мне бы повезло, если бы я все это тоже очистил. Может быть, придется когда-нибудь попробовать.
Изи

Просто перечитайте правила - нужно только два из трех встретившихся наборов правил, и это подходит. Хорошее шоу! Было бы здорово, если бы мы могли придумать тот, который займет 3/3, но я сомневаюсь, что это очень возможно.
Изи

Мне потребовалось много времени, чтобы добраться до этого момента, и я все еще сомневаюсь, что можно следовать всем правилам.
Joey

10

PHP (16 байт)

Я заметил, что мой предыдущий пример PHP не был достаточно запутанным, поэтому давайте посмотрим более явно запутанные примеры (предупреждение, запутывание!). Кроме того, вопиющее копирование примера GolfScript, за исключением уменьшения его размера (возможно ли это?). Эта запись требует либо PHP 5.4, либо short_open_tagвключен. При создании этого правила не было нарушено. На самом деле, эта запись не содержит букв или цифр ASCII.

Этот пример не нарушает ни одно из правил. Веселиться. Чтобы создать файл, выполните следующую команду.

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

Или, если вы не доверяете выполненной printfкоманде, я подготовил дамп Base64 файла.

PD89freak5OQ36iQjZObOw==

Если вы думаете, что оба метода для его генерации нарушают правила, я также сгенерировал файл на Dropbox .

И запустить его.

php obfus.php

Полученный файл должен иметь 16 байтов. Получайте удовольствие, управляя этим. Обратите внимание, что если у вас E_NOTICEвключены предупреждения, будет отображаться уведомление. Просто игнорируйте это, исправляя это будет тратитьдва персонажаодин символ (в @конце концов, я могу использовать оператор), и в результате Base64 будет выглядеть менее круто.


9

Пробелы (167 символов)

Чтобы получить программу WS, замените символы пробела, табуляции или перевода строки на S, T, L соответственно в следующей строке:

SSSTSSTSSSLTLSSSSSTTSSTSTLTLSSSSSTTSTTSSLTLSSSSSTTSTTSSLTLSSSSSTTSTTTTLTLSSSSSTSSSSSLTLSSSSSTSTSTTTLTLSSSSSTTSTTTTLTLSSSSSTTTSSTSLTLSSSSSTTSTTSSLTLSSSSSTTSSTSSLTLSSLLL

или загрузите «сырую» программу только для пробелов в текстовом файле hello.ws .

При выполнении этим интерпретатором WS эта программа выводит «Hello World».

Пояснение (игнорируйте пробел здесь!):

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

«Средние» строки (например TSSTSSSL) - это коды ascii (в двоичном формате, с Sобозначением 0, Tобозначением 1) для последовательных букв в «Hello World». Префикс SSSпомещает число, следующее за ним (оканчивается на L), в стек. TLSSвыводит символ с кодом ascii на вершине стека. Наконец, в соответствии с этим руководством , программа должна завершаться LLLдля чистого выхода интерпретатора.

NB: я ввожу это как отдельный ответ, потому что другая запись программы WS - это программа с 1287 символами, которая печатает «Привет, мир пробелов!» вместо обязательного «Hello World».



7

C 160 символов

Работает только на машинах с прямым порядком байтов с 4-байтовым 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);}

Удовлетворяет всем трем правилам.


1
Вы можете просто использовать числовые константы без 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 символов.

1
Аналогичная вена (на самом деле решали проблему несколькими различными способами, прежде чем остановиться на этом). x[]={45483*39994-3958,48465*38543-5584,6584695-3333};main(){puts(x);}- 69 символов. Я уверен, что смогу побриться еще немного, если уделить больше времени математике литералов. Во всяком случае, это был интересный способ провести пару часов :)
Коул Кэмерон,

7

PHP, 28 байт

Не совсем запутанный, но очень короткий и очевидный :). Показывая, что даже при ограничении символов вы можете очень легко следовать программам. Ограничения 1 и 3 следуют. Ограничение 2 было нарушено.

<?=str_rot13('Uryyb Jbeyq');

Обратите внимание, что это требует short_open_tagустановки, если вы не используете PHP 5.4 или выше. Возможно, некоторые примеры короче, но я думаю, что этот пример довольно короткий.


7

Баш 28 символов:

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

p | MοM o || ǝH

в качестве альтернативы / bin / echo (18 символов) *) см. обсуждение ниже.

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

Самопроверка:

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

Сильнее, чем ты! Инструменты, для переворачивания слов вверх ногами, инструменты думают, что буква «Н» или «о», перевернутая вверх ногами, лучше всего отображается как Н или о. Это будет противоречить группе 1 (Hlwd: 27: eor01) соответственно 3.

H может отображаться с

echo -e "\0127"

но 01 и 2 тоже отравлены. Гы! Но эхо bash-buildin имеет не только возможность отображать восьмеричные значения ascii, но и шестнадцатеричные:

echo -e "\x48"

Но если мы используем bash в качестве языка программирования, команда echo является частью программы, которая не только подсчитывает количество символов, но также содержит отравленные символы (hlwd: 27: eor01) eho из групп 1 и 3.

Так что в этот момент эхо умерло. К счастью, есть printf, который знает "% b" для отображения.

R является единственным проблемным символом в printf и принадлежит группе 3. Так как 'o' находится в последней группе, мы можем оставить его в Hello и в World, но мы можем использовать omicron ο, который выглядит как o, или ° &deg;.

Ссылки:


Было бы одобрить это, но ваша репутация слишком плохая.
Конрад Боровски

@ GlitchMr: Теперь вы можете - я проголосовал за что-то, и должно быть 500N. :)
пользователь неизвестен

dl.dropbox.com/u/63913412/stilltooleet.png . Кроме того, отрицательные вопросы не снижают репутацию. Ответы на понижение голосов делают, тем не менее.
Конрад Боровски

@GlitchMr: Ах, вот и все! :)
пользователь неизвестен

6

С (94)

На маленьких машинах Endian:

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

Нарушает правило II, но удовлетворяет остальное.


6

JavaScript - 132 символа

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

Нарушает правило I

Использование :

  • Вставьте «javascript: [script]» в адресную строку браузера
  • Сделайте пустую HTML-страницу, вставьте скрипт в тег

Нарушение правил 1 и 2. Вы используете номер 1 для массивов.
Кевин Браун

Вы можете заменить 1на !![]+![]и 0на , ""-""чтобы не нарушать правила # 2.
HoLyVieR

Спасибо @ Bass5098 и @HoLyVieR, я как бы пропустил 1 и 0 при сворачивании скрипта. Я заменил 0 на z = _-_, а 1 на I = - ~ z, я мог бы также использовать ++ z, но - ~ выглядит лучше :)
m0sa

3
А? !![]+![]? Почему не просто 4-3?
Тимви

4
@Timwi: больше запутывания
Томас Эдинг

6

Дис , 102 83 символа

Развернул цикл кода, поскольку буквы могут быть сгенерированы менее чем за пять последовательных операций. Сохранение нескольких символов путем повторного использования значения аккумулятора: два lявляются последовательными, SPACEмогут быть сгенерированы oи dмогут быть сгенерированы l.

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

Старая версия

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

С комментариями ниже. Он использует последовательность из пяти идентичных операций для генерации всех символов Hello World: одного поворота и четырех вычитаний.

^     (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 '*')

6

C: 162 символа (исключая ненужные переводы строки)

Я выбрал удобочитаемость и прозрачность при написании этого.

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

Он удовлетворяет всем трем требованиям.


1
Мне это нравится, но, к сожалению, оно не удовлетворяет всем правилам, поскольку содержит цифру 7, нарушающую правило № 3. Но от этого было бы легко избавиться 7. Кроме того, добавляя несколько ints, добавляя несколько дополнительных скобок и добавляя int puts(int*);в начало, он компилируется gcc -ansi -W -Wallтолько с одним предупреждением: элемент управления достигает конца функции non-void .
оч

5

Баш, 24 20 символов

Вам необходимо установить пакет "bsdgames".

rot13<<<Uryyb\ Jbeyq

Спасибо гнибблер :)


5

PostScript, 41 символ

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

Использование: $ gs -q -dNOPROMPT -dNODISPLAY filename.ps


1
Вы также можете запустить его так:gsnd -q -- filename.ps
Luser droog

5

JavaScript, 66 символов

Другое решение JavaScript, на этот раз нарушающее правило № 2.

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

Вышеизложенное следует концепции ответа Халлвабо. Прежде чем я понял этот подход, у меня была, возможно, более запутанная версия:

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

что также нарушает правило № 2 и входит в 114 символов. (Удалите возврат каретки в этом втором решении, поскольку это только там для удобочитаемости.)


4
Я читал , что в качестве R unescape.
Матеин Улхак,

@MateenUlhaq Я всегда читаю это как R unescape, и я играл только год больше десяти лет назад ... Что со мной?
Mwr247,


4

Фурье, 39 байт

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

Фурье всегда запутано. Это следует всем правилам.

Сломать:

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.

Это может быть немного уточнено.


Вау, я только что понял, что кто-то еще использовал Фурье: D Хороший, +1
Beta Decay
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.