Затуманений Hello World


123

Створіть найкоротшу можливу затуманену програму, яка відображає текст "Hello World".

Для того, щоб вважатись прихованою програмою, вона повинна відповідати принаймні двом із наступних вимог:

  • Не містить символи: h, l, wі dв будь-якому випадку
  • Не містить символи: e, o, r, 0, і 1в будь-якому випадку
  • Не містить символів: 2або7

Введення:
немає

Вихід:
Hello World


6
Я думаю, що importв python не дозволено.
Олександру

26
Чи застосовуються ці правила і до мовних ключових слів?
hallvabo

8
чи є такі випадки нечутливими обмеженнями?
онон

20
Може хтось пояснить, чому 2 і 7 не дозволено? Мені просто цікаво, оскільки я не бачу, чому саме їх обрали.
Томас Едінг

4
@trinithis та інші, персонаж ASCII 72, "H"саме тому я вибрав саме цих двох
Кевін Браун

Відповіді:


51

GolfScript, 17 символів

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

Під час тестування цього подання збережіть файл як прямий бінарний, а не 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 , однак з додатковою потужністю я вважав, що моє має бути трохи веселіше.

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

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

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

Caveat

З моменту 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
FYI Він використовує функцію regexp Perl (?{ code })для оцінки користувальницького коду Perl, під час відповідності регулярного виразу. Спеціальний код Perl друкує повідомлення. Це приємно, оскільки він не порушує жодного з правил.
бали

5
Ви, сер, привіт світовий король!
рекурсія.ninja

1
Оце Так! Просто вау! Тепер мені потрібно навчитися Perl, щоб побачити, як ти це зробив.
Грифон

69

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

Це було досить складно зробити це в C #, оскільки обмеження виключають будь-яке використання досить багатьох загальних ключових слів. У C # можна використовувати \ uxxxx послідовності виходу 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

@Joey: О, дякую! Хоча якщо перший аргумент Invokeможе бути будь-яким, він навіть не повинен бути c, це може бути 0... :)
Timwi

Так, зауважив, що коли я намагався встроїти лінійку c(що, на жаль, не працює, оскільки newвимагає eі .Split('x')занадто довгий (вийшов о 177).
Joey

Я не здогадувався, що це можливо. +1
Ігбі Ларгеман

1
Дуже розумна справа, з якою ви робили GetMethods. +1
Soham Chowdhury

51

BrainFuck, 106 ударів

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

Відповідає всім правилам, і він впевнено затуманений.


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

34
Хіба BrainFuck не заплутався своїм визначенням?
mbx

18
Будь-який грамотний програміст BF міг би визнати це ...
Мехрдад

Це порушує обидва правила 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

Гольфскрипт - 17 символів

Копіювати / вставляти простіше, ніж Chris '

'Ifmmp!Xpsme'{(}%

В основному цезарний шифр зміщується на 1 char


4
+1 Приємно, що копіювати простіше. У шахти є перевага порушити жодне з правил, а також (можливо, залежно від того, чи вважаються символи високого біту), виконуючи також символ гольфу. :-)
Кріс Єстер-Янг

Як це порушує правило?
d -_- b

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, чудова штука, але не дивно, я бачив, як ви займаєтесь гольфом :-)
Кіхотик

Потрібно, 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
Рот13 - це мова? : /
Сантош Кумар

3
так, і я можу створити його перекладача: P
oddcoder

6
Технічно rot13 - це лише шифр . Це стільки ж мовою, скільки шифр Віньєра.
XiKuuKy

19

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

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

Завдяки Пітеру Тейлору за використання гересту.


2
Можна зберегти 5 символів, використовуючи рядок тут:tr G-t F-s<<<Ifmmp\ Xpsme
Пітер Тейлор

18

Скала, 39

Рішення на зразок print ("Qnuux)` x {um "карта (_- 9 доChar)) (35 символів), не відповідають правилам 1 і 2 (" toChar "містить і" h ", і" r "), що робить це a трохи жорсткий.

Нарешті придумав таке:

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

Пропозиції щодо вдосконалення вітаються


18

TeX, 95 байт

Порушує третє правило.

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

Запустіть з, tex filename.texщоб отримати вихід двигуна або pdftex filename.texотримати PDF-файл.


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. Жоден корисний інший спосіб створення результату не з'явився, хоча, на жаль.


Тут ще багато "o" s та "e" s, і "r". Не впевнений, що я маю набагато більше удачі прибирати це, хоча. Можливо, все-таки доведеться його колись зняти.
Іссі

Просто перечитайте правила - потрібні були лише два з трьох наборів правил, і це справді відповідає вимогам. Гарне шоу! Було б чудово, якби ми могли придумати той, який займає 3/3, але я сумніваюся, що це дуже можливо.
Іссі

У мене було достатньо часу, щоб дійти до цього питання, і я все ще сумніваюся, що можливо дотримуватися всіх правил.
Джої

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 замініть символ Space, Tab або Linefeed на 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 ο || ǝH

альтернативно з / bin / echo (18 символів) *) див. обговорення нижче.

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

Самотест:

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

Важче, ніж ти! Інструменти, щоб перевернути слова догори дном, інструменти вважають, що "H" або "o" перевернуто догори ногами, найкраще відображати як H або o. Це було б в конфлікті з групою 1 (Hlwd: 27: eor01) відповідно 3.

H може відображатися за допомогою

echo -e "\0127"

але 01 і 2 отруєні теж. Гей! Але відлуння bash-buildin має не лише можливість відображення восьми значень асції, але й шістнадцяткове:

echo -e "\x48"

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

Отож саме в цей момент відлуння померло. На щастя, існує printf, який знає "% b" для відображення.

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

Посилання:


Підкреслимо це, але ваша репутація занадто прониклива.
Конрад Боровський

@GlitchMr: Тепер ви можете - я щось проголосував, і повинен бути 500-річним. :)
користувач невідомий

dl.dropbox.com/u/63913412/stilltooleet.png . Крім того, заборона питань не знижує репутацію. Тим не менше, відповіді нахиляються.
Конрад Боровський

@GlitchMr: Ах, це все! :)
користувач невідомий

6

C (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')

Порушення правила я

Використання :

  • Вставте "javascript: [скрипт]" в адресний рядок браузера
  • Складіть порожню сторінку 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лише з одним попередженням: управління доходить до кінця недійсної функції .
пт

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.
Mateen Ulhaq

@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
бета-розпад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.