難読化されたHello World


123

テキスト「Hello World」を表示する、最短の難読化プログラムを作成します。

難読化されたプログラムと見なされるには、次の要件のうち少なくとも2つを満たす必要があります。

  • 文字が含まれていません:hlwそしてdどのような場合には
  • :文字が含まれていませんeor0、そして1どのような場合には
  • 文字が含まれていません:2または7

入力:
なし

出力:
Hello World


6
importはPythonでは許可されていないと思います。
アレクサンドル

26
これらのルールは言語キーワードにも適用されますか?
hallvabo

8
それらの大文字と小文字を区別しない制限はありますか?
オエノン

20
誰かが2と7が許可されない理由を説明できますか?なぜそれらが特に選ばれたのかわからないので、私は興味があります。
トーマスエディング

4
@trinithisなど、ASCII文字が72あり"H"、私はそれらの2を選んだ理由である
ケビン・ブラウン

回答:


51

GolfScript、17文字

'・š““ ??ߨ????”›' {〜}%

この送信をテストするときは、ファイルをUTF-8ではなくストレートバイナリとして保存してください。ファイルの再作成に問題がありますか?以下がその16進ダンプです。

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 :-)
Chris Jester -ヤング

12
ISO-8859-1ではなく、実際にはWindows-1252です。
コンラッドボロスキー

@GlitchMr:実際には、提出物にWindows-1252以外の文字も含まれていることは確かです。;-)
クリスジェスターヤング

@xfix Windows-1252でもありません。Windows-1252にはISO-8859-1よりも有効な文字がありますが、エントリにはWindows-1252でも無効な0x8Dや0x90などの文字が含まれています。
クリスジェスターヤング

Windows-1252では一部の文字が許可されていないことを忘れてしまいました。
コンラッドボロウスキ

171

Perl

明らかな答えはある種のシフトを使用しているので、Acme :: EyeDropsを使用して何かを投稿する義務がありますが、余分な力があれば、私のものはもう少し楽しいはずだと思いました。

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

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

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

警告

Perlバージョン5.18以降、このコードの実行を許可するメカニズムは非常に強力になり、誤用を防ぐためにデフォルトで無効になっています。したがって、バージョン5.18以降use re 'eval';では、スクリプトの先頭に追加するか、スクリプトに名前が付けられているworld.pl場合は、次のように実行できますperl -Mre=eval world.pl。これらの見苦しいキャラクターを追加しなければならないのは残念ですが、そうではありません。(注:この機能を有効にするとライブラリまたはアドオンが使用されず、表示されるコードは有効なPerlコードであり、メカニズムはデフォルトで有効にならないことを強調したい)。


1
私はそれを試してみましたが、それは素晴らしいです!+1
トマス

2
@TomasT。おかげで、それは楽しいことでした。実際にゴルフを3枚の写真だけで実行するには、ゴルフが必要でした。
ジョエルバーガー

1
参考情報Perl正規表現機能(?{ code })を使用して、正規表現の照合中にカスタムPerlコードを評価します。カスタムPerlコードがメッセージを出力します。ルールに違反しないのでいいです。
pts

5
こんにちは、世界の王様です!
recursion.ninja 14年

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代わりに、文字列で使用できます。考え直してみると、まったく必要なく、の最初の引数として再利用できます。MSDNは、静的メソッドの場合、最初の引数は無視されると述べています。これにより、175になります。\u00HH\xbcInvoke
ジョーイ

@ジョーイ:おっ、ありがとう!への最初の引数Invokeが何でもよい場合、それである必要さえありませんがc0... :)
Timwi

はい、私はインラインしようとしたときに気づいc以来、悲しげに動作しない(new必要とeし、.Split('x')長すぎる()177で出てきた。
ジョーイ

これが可能だとは思いもしませんでした。+1
イグビーラージマン

1
あなたがした非常に賢いことGetMethods。+1
Soham Chowdhury

51

BrainFuck、106ストローク

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

すべてのルールを満たしており、確かに難読化されています。


2
まだ少しゴルフをすることはできると思うが、寝るまで待たなければならない。
R.マルティーニョフェルナンデス

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 voidコンテキストで`゚ω゚ ノ['_']` という名前の変数に割り当てます。次に、変数o_およびとともに(゚ー゚))に値3が割り当てられます。それはその効果を継続し、実質的に無操作である無害な余分な作業を多く行い、迂回方法を使用して意図しない作業(を呼び出すalert("Hello world"))ファッション。
マークリード14年


40

Befunge-93-10x9ブロック

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 -_- b

11
@sims、それがありeます
ニブラー

2
3つのうち2つ。:D
ロブ

30

Python

ルール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')

3つのルールすべて(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文字

Joel BergerのPerlソリューションを見た後、私は自分でASCIIアートのかわいさをやらなければならないと感じました...

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

コードの文字数を見出しに表示できますか?私はあなたが得たどのように多く見るために好奇心が強い、それはへの...
WallyWest

@ Eliseod'Annunzioそこに行くと、これがコードゴルフであることを忘れました。長さは空白を取り除いた状態で与えられ、最後($)は空白になっています()$対称性のために追加したため)。
ホタル14年

あなたのヒントをありがとう...私は「W」を考慮してコードのサイズを変更し、あなたのアドバイスを使用してそれを縮小しなければなりませんでした...
WallyWest 14年

21

rot13-11文字

Uryyb Jbeyq

2019/2/12:この回答は歴史的な理由により保持されており、現在のサイトルールでは有効な回答ではありません。


3
rot13は言語ですか?:/
サントシュクマール

3
はい、そのインタープリターを作成できます:P-
オッドコーダー

6
技術的には、rot13は単なる暗号です。これは、Vigenère暗号と同じくらい言語です。
-XiKuuKy

19

Bash、30 25文字

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

ヒアストリングの使用についてPeter Taylorに感謝します。


2
あなたはここに文字列を使用して5つの文字を保存することができます:tr G-t F-s<<<Ifmmp\ Xpsme
ピーター・テイラー

18

Scala、39

print( "Qnuux)` x {um "map(_- 9 toChar))(35文字)のようなソリューションは、ルール1と2に違反します(" toChar "には" h "と" r "の両方が含まれます)。少し厳しい。

最後にこれを思いつきました:

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

改善のための提案を歓迎します


18

TeX、95バイト

3番目の規則を破ります。

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

with tex filename.texを実行して、dvi出力pdftex filename.texを取得するか、pdfを取得します。


1
うわー、TeXがこんなに難読化されることを決して知らなかった!
ガー14年

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すでに2つのルールに違反しているのは非常に悪いことです。

そして、これはうまくいくのが大変でした。

  • 最初の行は、配列を文字列にキャストするときにアイテム間にスペースが表示されないように設定$OFS''ます。
  • char実際にキャストすることはすべての中で最も困難な部分でした、そして私は方法を探すために一日中過ごします。私は残りのすべてをうまく動作させましたが、それらについて計算すると、intsではなくcharsがあります。それらを文字列に戻すのはちょっと大変でした。
  • Invoke-Expressionも必要とせずに呼び出す方法を見つけましたe

    &(gcm i?x)
    

    しかし、それはまだ議論に欠けていました。そして、それまでに3つのルールをすべて満たすという目標を捨てました。また、それはにキャストするのに特に役立ちませんでしたchar

  • 新しいPowerShellバージョンで少し短くなりました。残念ながら、結果を作成するための便利な方法はありませんでした。


ここにはまだ多くの「o」と「e」があり、「r」もあります。しかし、私はそれを一掃することができるかどうかもわかりません。いつかそれを試してみる必要があるかもしれません。
イッツィー

ルールを読み直してください-必要なのは3つのルールセットのうち2つだけであり、これは対象となります。良いショー!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警告を有効にしている場合、通知が表示されることに注意してください。無視してください。修正すると無駄になります。二文字1文字(@結局演算子を使用できます)、結果の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:)は、「Hello World」の連続する文字のASCIIコード(バイナリ、S0をT表し、1を表す)です。接頭辞SSSは、それに続く番号(で終わるL)をスタックにプッシュします。TLSSasciiコードがスタックの一番上にある文字を出力します。最後に、このチュートリアルによれば、プログラムLLLはインタプリタによるクリーンな終了のために終了する必要があります。

注:別のWSプログラムエントリは「Hello、world of space!」を出力する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);}

3つのすべてのルールを満たします。


1
0、1、2、7なしの数値定数を使用できます:-111 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);}文字。

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_tagPHP 5.4以降を使用していない限り、これを設定する必要があることに注意してください。いくつかの例はもっと短いかもしれませんが、この例はかなり短いと思います。


7

bash 28文字:

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

p |ɹoο||ǝH

または、/ bin / echo(18文字)*)を使用して、以下の説明を参照してください。

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

セルフテスト:

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

考えよりも難しい!ツール、Wordを逆さまにするためのツールは、「H」または「o」を逆さまにすると、Hまたはoとして表示するのが最適であると考えます。これは、それぞれグループ1(Hlwd:27:eor01)3と競合します。

Hは

echo -e "\0127"

しかし01と2も毒されています。うん!ただし、bash-buildinエコーには、8進数のASCII値を表示するオプションだけでなく、16進数も表示できます。

echo -e "\x48"

しかし、bashをプログラミング言語として使用する場合、echoコマンドはプログラムの一部であり、文字数にカウントされるだけでなく、グループ1および3からの毒文字(hlwd:27:eor01)ehoも含まれます。

これがエコーが死んだ瞬間です。幸い、表示する "%b"を知っているprintfがあります。

rはprintfの唯一の問題のある文字であり、グループ3に属します。「o」は最後のグループにあるため、HelloとWorldに残すことができますが、oのように見えるomicronοを使用できます。 ° &deg;

リンク:


これに賛成しますが、あなたの評判はあまりにも控えめです。
コンラッド

@GlitchMr:できるようになりました-私は何かに投票しました、そして500Nを見るべきです。:)
ユーザー不明

dl.dropbox.com/u/63913412/stilltooleet.png。また、質問をダウン投票しても評判は低下しません。それにもかかわらず、回答のダウン投票は行われません。
コンラッドボロスキー

@GlitchMr:ああ、それだ!:)
ユーザー不明

6

C(94)

リトルエンディアンマシンの場合:

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に置き換え

3
え?!![]+![]?どうして4-3
ティムウィ

4
@Timwi:さらに難読化
トーマス・エディング

6

Dis102 83文字

5回未満の連続操作で文字を生成できるため、コードループを展開しました。アキュムレータ値を再利用していくつかの文字を保存した2つはl、連続しているSPACEから生成することが可能odから生成することができますl

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

旧版

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

以下のコメント付き。5つの同一の操作のシーケンスを使用して、Hello World1つの回転と4つの減算のすべての文字を生成します。

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

3つの要件をすべて満たしています。


1
私はこれが好きですが、残念ながらすべてのルールを満たしているわけではありません7。数字が含まれており、ルール3に違反しているためです。しかし、それを取り除くのは簡単でしょう7。また、いくつかintのsを追加し、いくつかの余分な括弧を追加int puts(int*);し、先頭に追加することgcc -ansi -W -Wallにより、単一の警告のみでコンパイルされます。コントロールはnon-void functionの終わりに達します
pts

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

上記は、hallvaboの答えの背後にある概念に従っています。私がそのアプローチに取りかかる前に、おそらくより難読化されたバージョンがありました。

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文字になります。(読みやすいように、この2番目のソリューションではキャリッジリターンを削除しています。)


4
私はそれをRと読みましたunescape
Mateen Ulhaq

@MateenUlhaq私はいつもR unescapeと読んでいて、10年以上前に1年しかプレイしていませんでした。
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、1:すごい迫力、私はちょうど他の誰かがフーリエ変換を使用していることを実現しました
ベータ崩壊
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.