すべての英数字とアンダースコアを印刷します


37

英数字とアンダースコアの文字列を任意の順序で印刷または返すプログラムまたは関数を作成します。正確には、次の文字が出力する必要がない、そして何より

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

標準出力に出力する場合、出力後のオプションの末尾の改行が許可されます。

上記の文字を9つ以上含む組み込み定数は許可されません。


バイト単位の最短コードが優先されます。

これは非常に簡単な挑戦であり、それでもなお興味深い答えが得られると思います。


リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

# Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


2
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
デニス

回答:


11

凸、9バイト

新しい方法!また、Luisの答えとほぼ同じですが、Convexでのことであることに気付きましたが、私はこれを独自に思いつきました。

'{,®\W"Oò

オンラインでお試しください!

説明:

'{,           Array of chars from NUL to 'z
   ®\W"       Regex to match non-word characters
       Oò     Replace all matches with emtpy string

古いソリューション、10バイト:

A,'[,_¬^'_

オンラインでお試しください!

説明:

A,          0-9
'[,_¬^      A-Za-z
'_          _

1
@ mbomb007はい、それはCJamコードと同等ですA,'[,_el^'_
-GamrCorps

これはどのエンコーディングですか?
コナーオブライエン

@CᴏɴᴏʀO'BʀɪᴇɴCP-1252またはWindows-1252
GamrCorps


12

Perl、20バイト

-E追加費用なしで必要です。

say+a.._,A.._,_..9,_

だから、私の元の答え(下)は少し退屈でした。私が思いついた唯一のものは上記のものであり、それはまったく同じですが、もう少し混乱しているように見えます...それは以下とほぼ正確に同等です:

say a..z,A..Z,0..9,_

以下のようなI @ msh210のコメントで提案、彼らはただ少し長すぎますよ!


1
+1。少しおもしろいですが、もっと長いのはこれらのいずれかで、すべて27バイトです:say grep/\w/,map chr,1..122|| say map{chr=~/\w/;$&}1..122|| say map{chr=~s/\W//r}1..122
msh210

1
:msh210 @それでも、これはもっと... 25しかしマネージド縮小することはできませんsay chr=~/\w/g for 1..255...
ドムヘイスティングス

10

チェダー、31 27バイト

->97@"123+65@"91+48@"58+"_"

これは、@"演算子をよく示しています

@"オペレーターの修正に最終的に到達したため、完了しません。バグは、JS範囲ではなくチェダー範囲を生成していたため、適切に機能しないことでした


説明

この@"演算子は@CᴏɴᴏʀO'Bʀɪᴇɴによって設計され、LHSからRHSまでの文字列範囲を生成します。単項演算子として使用される場合、指定されたコードポイントで文字を返します(pythonのようにchr

非ゴルフ

->
  97 @" 123 +
  65 @" 91  +
  48 @" 58  +
  "_"

10

brainfuck、58バイト

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

オンラインでお試しください

テープを3・2 nに初期化し、そこから動作します。

+++[[<+>->++<]>]    initialize the tape
                    |   0 |   3 |   6 |  12 |  24 |  48 |  96 | 192 | 128 |   0 |   0 |
                                                                                    ^
<<[-<->]            subract 128 from 192
                    |   0 |   3 |   6 |  12 |  24 |  48 |  96 |  64 |   0 |   0 |   0 |
                                                                        ^
<<-.+<<++           ouput '_'; increment 24 twice
                    |   0 |   3 |   6 |  12 |  26 |  48 |  96 |  64 |   0 |   0 |   0 |
                                                ^
[->>+.>+.<<<]       output aAbBcC ~ zZ
                    |   0 |   3 |   6 |  12 |   0 |  48 | 122 |  90 |   0 |   0 |   0 |
                                                ^
<--[->>.+<<]        decrement 12 twice; output 0 ~ 9
                    |   0 |   3 |   6 |   0 |   0 |  58 | 122 |  90 |   0 |   0 |   0 |
                                          ^

9

JavaScript(ES6)、62バイト

_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,'')

を返す0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzため、文字列リテラルを返す関数よりも6バイトだけ短くなります。はい、それは吸う。


btoa必要な出力を返す文字列を見つけてみてください。
-gcampbell

@gcampbell 60!(60階乗)文字列の検索には時間がかかる場合があります
ニール

あなただけを使用することができますatob
-gcampbell

@gcampbellどういうわけか表現できない文字列を除外する必要があります。
ニール

@gcampbell btoaバージョンは、とにかく62バイトかかります。60の英数字をエンコードするのに45、3つのエンコードされない文字(を含む_)、14を使用し_=>atob("")+""ます。
ニール

9

Haskell、38バイト

'_':['a'..'z']++['A'..'Z']++['0'..'9']

ここで説明することはありません。


2
質問:違いは何だ:とは++
ダウンゴート

3
@Downgoat:++2つの文字列を受け取り、それらを連結します。:文字と文字列を受け取り、文字の前に文字を配置します。"_"++['a'..'z']...動作しますが、1バイト長くなります。
-nimi

8

PowerShell v3 +、35 33バイト

-join([char[]](1..127)-match'\w')

動的配列を作成し1..127、配列としてキャストしcharます。これ-matchは、正規表現を操作する演算子に送られ、\w一致するすべての要素(つまり、正確に英数字と下線)が返されます。これらの配列要素をカプセル化-joinして、1つの文字列としてまとめます。それはパイプラインに残り、出力は暗黙的です。


1
ねえ、それは公平ではありません。私自身の解決策は、0...で開始したことを除いて同一です
ジョーイ

@Joey Gotta早く行きます。:D
AdmBorkBork

特に些細で明白な解決策については、私は推測する;
ジョーイ

7

V、27バイト

i1122ñYpñvHgJ|éidd@"Í×

オンラインでお試しください!

この答えは恐ろしく複雑です。後で説明を投稿します。

Hexdump:

00000000: 6916 1631 1b31 3232 f159 7001 f176 4867  i..1.122.Yp..vHg
00000010: 4a7c e969 6464 4022 1bcd d7              J|.idd@"...

説明:

読みやすい:

i<C-v><C-v>1<esc>                                   "Insert the text "<C-v>1"
                                                    "<C-v> means "literal"
                 122ñ       ñ                       "122 times,
                     Yp                             "Duplicate this line
                       <C-a>                        "And increment the first number on this line
                             vHgJ                   "Join every line together
                                 |éi                "Insert an 'i' at the beginning of this line
                                    dd              "Delete this line
                                      @"<esc>       "And execute it as V code.
                                                    "That will generate every ascii value from 1-123
                                             Í×     "Now remove every non-word character.

5
:D:D:Dチェダーはゴルフのラングと結びついています!
ダウンゴート

7

J、30 29 28バイト

randomraのおかげで1バイト節約できました!

~.u:95,;48 65 97+i."*10,,~26

出力:

   ~.u:95,;48 65 97+i."*10,,~26
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

説明

説明自体は提供しませんが、中間結果を提供します。

   10,,~26
10 26 26
   i. b. 0
1 _ _
   *  b. 0
0 0 0
   i."* b. 0
   i."*2 3 4
0 1 0 0
0 1 2 0
0 1 2 3
   i. 2
0 1
   i. 3
0 1 2
   i. 4
0 1 2 3
   i."*10,,~26
0 1 2 3 4 5 6 7 8 9  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   0 1 2 + i."*10,,~26
0 1 2 3 4 5 6 7  8  9  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
1 2 3 4 5 6 7 8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   48 65 97+i."*10,,~26
48 49 50  51  52  53  54  55  56  57  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48
65 66 67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   ;48 65 97+i."*10,,~26
48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   95,;48 65 97+i."*10,,~26
95 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ...
   u:95,;48 65 97+i."*10,,~26
_01234567890000000000000000ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
   ~.u:95,;48 65 97+i."*10,,~26
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

6

Haskell、31バイト

do(x,y)<-zip"aA0_""zZ9_";[x..y]

zip "aA0_" "zZ9_"はエンドポイントのリストを提供します[('a','z'),('A','Z'),('0','9'),('_','_')]do表記は各かかり(x,y)包括的に\(x,y)->[x..y]、結果を連結します。Anders Kaseorgにのdo代わりに2バイトをありがとう>>=

代替案と比較してください:

do(x,y)<-zip"aA0_""zZ9_";[x..y]

zip"aA0_""zZ9_">>= \(x,y)->[x..y]
f(x,y)=[x..y];f=<<zip"aA0_""zZ9_"
id=<<zipWith enumFromTo"aA0_""zZ9_"
[c|(a,b)<-zip"aA0_""zZ9_",c<-[a..b]]
f[x,y]=[x..y];f=<<words"az AZ 09 __"

2
do表記は2つのバイトを保存しますdo(x,y)<-zip"aA0_""zZ9_";[x..y]
アンダースKaseorg

4

C、50バイト

f()引数なしで呼び出します。

f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}

プリント

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210

1
isalnum(n)|n==95&&putchar(n)
-orlp

UBがあります。必要な引数を渡しませんでした。
ヴェン

@orlp-のputc代わりに使用しましたputcharputcストリームへの書き込みも想定していますが、これは渡されませんでした。関数自体は正常に動作します(putc完全に削除してみてください、そして動作します)。
-owacoder

@owacoderおっと!
orlp

1
@QPaysTaxesそれは間違っています。If the number of arguments does not equal the number of parameters, the behavior is undefined.6.5.2.2/6、参照N1570を
ヴェン

4

///、63バイト

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

有効な答えは?ルールに違反しているようです。
ニカエル

@nicaelはどのルールですか?
リーキー修道女

「上記の9つ以上の文字を含む組み込み定数は許可されていません。」...明らかな何かが欠けていますか、@ Leaky?
ニカエル

4
はい、これは組み込み定数を使用していません。
リーキー修道女

わかりましたが、少なくともこれは奇妙です。間違いなく、OPはシーケンスのコピーと貼り付けを要求しません。これは面白くないです。
ニカエル

4

Python 3、58バイト

print('_',*filter(str.isalnum,map(chr,range(123))),sep='')

STDOUTに出力する完全なプログラム。

出力は次のとおりです。 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

使い方

map(chr,range(123))       Yield an iterator containing all ascii characters with
                          code-points in [0,122]...
*filter(str.isalnum,...)  ...keep characters if alphanumeric and unpack into tuple...
print('_',...,sep='')     ...add underscore and print all characters with no separating
                          space

Ideoneでお試しください

文字列定数が許可された場合、次は45バイトになります。

from string import*
print('_'+printable[:62])

1
print('_'+*filter(str.isalnum,map(chr,range(123))))
リーキー修道女

@LeakyNun構文エラーがスローされます。と似たようなことをすることを考えましたprint('_',*filter(str.isalnum,map(chr,range(123))))が、それはスペースを分離して印刷します。OPはコメントで「...出力にスペースは一切許可されていません」と述べました。
-TheBikingViking

Python 2は、このアプローチで1バイト節約できますprint''.join(filter(str.isalnum,map(chr,range(123)))),'_'
。–アトラロジスト

4

codegolfでの私の最初の試み!

C位、168 152 150 147 130 127 117 116 115 109 106のバイト

for(var a='0';a<'~';a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}

aloisdg、AstroDan、Leaky Nun、Kevin Lauに感謝します-コメントのすべての助けをケニーではありません。


2
PPCGへようこそ!すべてのスペースを削除してください!また、いくつかのヒントについては、C#でのゴルフのヒントを参照してください。
aloisdgは、モニカを復活させる

1
すばらしい-さらに2バイト節約できました。私はこのコードゴルフが本当に好きになり始めています:)
ダニエル

1
知る限りでは、\w正規表現クラスは英数字とをカバーしており_、これは"\\w"正規表現一致関数に対して十分に有効になります。
バリューインク

1
コードは、ステートメントではなく、関数または完全なプログラムでなければなりません。また、.NetFiddleを使用して、コードのデモを共有します:)
aloisdgによると、Reinstate Monica

2
「C#はコードゴルフには最適ではありません」C#はゴルフをコードするのに十分楽しいと思います。私はそれが遊ぶ主流の素晴らしい言語だと思います。あなたが勝つためにここにいるなら、あなたは失います。学習し、楽しい時間を過ごすことを目標に定義すると、常に勝ちます。
aloisdgは、Reinstate Monicaを言う


4

Object Pascal、85 83 73バイト

一連の文字を使用した単純なオブジェクトパスカル。プロシージャの代わりに完全なプログラムを作成すると、2バイト削り取られます。プログラムキーワードを削除すると、さらに10バイト削ります。

var c:char;begin for c in['a'..'z','A'..'Z','0'..'9','_']do write(c);end.

私は、Object Pascalの正確な分類によって常に混乱していたでしょう。Turbo / Borland PascalとFreePascalは、役に立たないprogramキーワードなしで確かに満足しています。
マナトワーク

@manatwork私はそれを知りませんでした。奇妙なことに、ここではパスカルの競争力を
高めてい

私が育った言語。私はそれがまだ死んでいないことを知っています...
rexkogitans

@rexkogitansええ、私は学校でそれを学びましたが、当時から何も覚えていません...私は今再びプログラミングで遊んでいます
-hdrz

4

bash – 47 37バイト

man sh|egrep -o \\w|sort -u|tr -d \\n

私のシステムの出力は次のとおりです。

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

参考になったDigital Traumaに感謝します。

一部のシステムでは、バイトを保存するascii代わりに使用できる場合がありman shます。


1
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
デジタル外傷

1
@DigitalTraumaありがとうございます!実験して\w一致を見つけ_、すでに大文字と小文字を区別しないため、さらに短縮できます。

env代わりにman sh、ほとんどの環境で動作するはずです。それは私のものです。$ env|egrep -o \\w|sort -u|tr -d \\n-> 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
YSC

ありませんJ。私の悪い。
YSC

4

PHP、40バイト

_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;

オンラインデモ


1
卓越性のために+1。サイドノート:PHP 7.2では、将来のバージョンでは未定義の定数に対してエラーがスローされるという警告が表示されます。:-(
タイタス

4

網膜30 19 16 15 12バイト

元のアルファベットの試みを修正しましたこの最新バージョンの。各文字はループで印刷されます。

最初の行は空です。


;
+T\`;w`w_

オンラインで試す

出力:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

私の最新の試みから4バイトのゴルフをしてくれたLeaky Nunに感謝します。


私はwそれが9つ以上の必要な文字を含む定数として数えると思います。おそらく右側を展開wし、左側をに置き換える必要がありoます。ただし、それぞれに5文字しか含まれていないため、EO代わりにを使用してバイトを保存できますd
マーティンエンダー

文字w変換ステージ内の@ mbomb007 は正規表現を行うことはありません。これは、必要な63文字のリストに展開される短縮形です。少なくとも\w正規表現で使用するのとはまったく異なるため、このケースについてorlpに具体的に尋ねたいと思います。
マーティンエンダー

3

MATL、11バイト

7W:'\W'[]YX

オンラインでお試しください!

7W     % Push  2 raised to 7, i.e. 128
:      % Range [1 2 ... 128]
'\W'   % Push string to be used as regex pattern
[]     % Push empty array
YX     % Regex replace. Uses (and consumes) three inputs: source text, regex pattern, 
       % target text. The first input (source text) is implicitly converted to char.
       % So this replaces non-word characters by nothing.
       % Implicitly display

2バイト短縮:8W:'\w'XX
DJMcMayhem

2
@DrGreenEg​​gsandIronManありがとう!しかし、改行はセパレータとして許可されていないと思います。チャレンジは、「英数字とアンダースコアの文字列...そしてそれ以上」と言います
ルイスメンドー

1
なぜ、あなたは行うことができなかった8W:'\w'XX!私が試したが、動作しません
DJMcMayhem

@DrGreenEg​​gsandIronMan非常に良い質問です!私がしてみましょうチャットであなたに答える私はもう少し文字を使用できるように
ルイスMendo

3

Brachylog、25バイト

"_"w9yrcw"A":"Z"ycL@l:Lcw

これにより、以下が出力されますSTDOUT

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

説明

"_"w               Write "_"
9y                 Get the list [0:1:2:3:4:5:6:7:8:9]
  rcw              Reverse it, concatenate into one number, write
"A":"Z"y           Get the list of all uppercase letters
        cL         Concatenate into a single string L
          @l:Lcw   Concatenate L to itself lowercased and write


3

CJam15 14 11バイト

@FryAmTheEggmanと@Dennisのおかげで4バイトオフ!

A,'[,_el^'_

オンラインでお試しください!

A,    e# Push range [0 1 ... 9]
'[,   e# Push range of chars from 0 to "Z" ("[" minus 1)
_el   e# Duplicate and convert to lowercase
^     e# Symmetric difference. This keeps letters only, both upper- and lower-case
'_    e# Push "_".
      e# Implicitly display stack contents, without separators

3

Brainfuck、89バイト

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

ここで試してみてください

詳細:

+++++++++[>+++++>+<<-]>+++.  Goes to '0' while remembering a 9 for the 9 other numbers
[<+.>-]                      Simply prints for the next 9 characters
<+++++++>                    Moves it 7 space to the letters
>+++++++++++++               Saves a 13
[<+<+.+.>>-]                 Prints 2 char at a time while making a second '13' space
<<+++++.+>                   Moves 5, prints '_' and moves to the lowercases
[<+.+.>-]                    And again the double print

コメントできたら、他の人の答えを改善する必要があります。しかし、私はできないので、私も自分の投稿するかもしれません。私がこれを書き始めたとき、最も低いBFの長さは96でした。


3

F#、50 59バイト

Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])

出力:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

編集:最初に数字を逃した

Edit2、このHaskellソリューションに触発されこのF#スニペットは67バイトです。

Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])

出力:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

3

六角形、33

"A}_8_47<='>({a/_x.@.9!\356);');

拡張:

    " A }
  _ 8 _ 4 7
 < = ' > ( {
a / _ x . @ .
 9 ! \ 3 5 6
  ) ; ' ) ;
   . . . .

出力:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_

オンラインでお試しください!

印刷できない文字があることに注意してください 0x1Aプログラムの最初のバイトとして。また、これにより、拡張された六角形の最初の行が多少オフに見えます。このトリックを見せてくれて、アルファベットを印刷するアルゴリズムを提案してくれたMartinに感謝します!

これは、六角形の2つの端と、文字間の接合部に接触する六角形の端にある数字26を格納aAて、アルファベットを印刷します。これは次のようになります。

A \ / a
   |
   26

次に、文字を出力し、それらをインクリメントし、次に数字をデクリメントするループに入ります。1回の反復の後、次のようになります。

B \ / b
   |
   25

等々。初期化の線形コードは次のとおり0x1A " A } aです。制御フローの変更以外のループの線形コードは次のとおり; ) ' ; ) { ( ' =です。

カウンターがゼロに達すると、別のパスに従って数字とアンダースコアを出力します。これは直線的に書かれていますx 3 5 6 8 4 7 9 ! ; { @。これにより、現在のメモリエッジの値が、xすべての10進数を含む数字1203568479(ASCIIコードは120であることに注意)に置き換えられます。この数値を印刷してから、Hexagonyのすてきな機能を使用します。数値mod 256をASCII文字として印刷します。これはたまたま95、またはアンダースコアです。


3

Brainfuck、114 103 98 90 76 71バイト

別の些細な(今では重要ではない)ソリューションですが、今回はBFです!

@primoのおかげで14(!)バイト節約できました。

@primoが範囲を後方に生成するように提案したおかげで、さらに4バイトを節約できました。小文字を印刷する前にインクリメントしてもう1つ保存しました。

新規(繰り返し4、71):

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

古い(値、114):

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

古い(再発1、103):

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

古い(再発2、90):

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

古い(繰り返し3、76):

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

8ビットのラッピングセルとラッピングメモリを想定しています。Try it onlineを使用しました

すべて印刷 _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

まず、この部分

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

これらの値でテープを初期化します

[91, 70, 49, 21, 7]
                 ^

これはf(x) = 7 * (3 * x + 1)、基本的にモデル化した再帰関係が逆向きであるため機能します。@primoのHello、Worldをご覧ください再帰関係とは何かの説明については回答してください。

その後、これらの値を有用な値に変更するのは非常に簡単です。(そしてアンダースコアを印刷)

Code: +++<--<-<-----<++++.+

Tape: [96, 65, 48, 26, 10]
       ^

次に、単純なループは値を使用して残りの文字を出力します。印刷の前に増分することで1バイト節約します。

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

私は本当に短いシーケンス世代を見つける必要があります。

うまく機能していると思われる再帰関係を見つけましたが、ハントとペックの少ない短い関係があるかもしれません。

線形回帰計算機を使用して、可能な限り最短の線形回帰関係を見つけるため、改善したい場合は他の式を見つける必要があります。

@primoは繰り返し関係を本当に改善しました、ありがとう。


後方構築はどうですか?+[--[<+++++++>->+<]>-]
プリモ

@primoうわー!それはどのように機能しますか?
ブルー

3は不均一なので、256回ループします。で終わることにより>-]、最終用語が1(x7)になることを確認できます。実際には、おそらくで開始する必要-があります。
プリモ

3

Sesos、17バイト

00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b           .T.,..q....V...q;

出力

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_

オンラインでお試しください!デバッグを確認をして、生成されたバイナリコードを確認します。

使い方

上記のバイナリファイルは、次のSASMコードをアセンブルして生成されています。

add 48     ; Set cell 0 to 48 ('0').
fwd 1      ; Advance to cell 1.
add 10     ; Set cell 1 to 10.
jmp        ; Set an entry marker and jump to the jnz instruction.
    rwd 1  ;   Retrocede to cell 0.
    put    ;   Print its content (initially '0').
    add 1  ;   Increment cell 0 ('0' -> '1', etc.).
    fwd 1  ;   Advance to cell 1.
    sub 1  ;   Decrement cell 1.
jnz        ; While cell 1 in non-zero, jump to 'rwd 1'.
           ; This loop will print "0123456789".
rwd 1      ; Retrocede to cell 0, which holds 48 + 10 = 58.
add 7      ; Set cell 0 to 65 ('A').
fwd 1      ; Advance to cell 1.
add 26     ; Set cell 1 to 26.
jmp        ; Set an entry marker and jump to the jnz instruction.
    rwd 1  ; Retrocede to cell 0.
    put    ; Print its content (initially 'A').
    add 32 ; Add 32 to convert to lowercase ('A' -> 'a', etc.).
    put    ; Print the cell's content.
    sub 31 ; Subtract 31 to switch to the next uppercase letter ('a' -> 'B', etc.).
    fwd 1  ; Advance to cell 1.
    sub 1  ;   Decrement cell 1.
jnz        ; While cell 1 in non-zero, jump to 'rwd 1'.
           ; This loop will print "AaBb...YyZz".
rwd 1      ; Retrocede th cell 0, which holds 65 + 26 = 91.
add 4      ; Set cell 0 to 95 ('_').
put        ; Print its content.


同様に心は素晴らしいと思います!
デニス

@LeakyNunうーん、ちょっと遅れますが、あなたのものは3バイト短いように見えます...
エリックアウトゴルファー

@EriktheOutgolfer Sesosは、以前は非効率的な方法でエンコードされていました。両方のプログラムの長さは現在17バイトです。
デニス

@Dennis Ah、まあ、TIOキャッシュは時々混乱する可能性があります。
エリックアウトゴルファー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.