英数字とアンダースコアの文字列を出力または返すプログラムまたは関数を作成します任意の順序。正確には、次の文字を出力する必要があります。これ以上:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
stdoutに出力する場合、出力後のオプションの末尾の改行が許可されます。
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
var QUESTION_ID=85666,OVERRIDE_USER=4162;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody> </tbody> </table> </div><div> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody> </tbody> </table> </div><table style="display: none"> <tbody> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
コメント
- コメントは詳細な議論のためのものではありません。この会話はチャットに移動されました。
回答
凸、9バイト
新しい方法!また、それはルイスの答えとほとんど同じですが、凸面であることに気づきましたが、私はこれを独自に思いつきました。
"{,®\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 "_ _
コメント
- @ mbomb007はい、CJamコード
- これはどのエンコーディングですか?
- @CᴏɴᴏʀO’BʀɪᴇɴCP-1252またはWindows-1252
回答
回答
Perl、20バイト
追加費用なしで-E
が必要。
say+a.._,A.._,_..9,_
つまり、私の元の回答(下記)は少し退屈でした。私が思いついたのは上記だけです。これはまったく同じですが、少し混乱しているように見えます…以下とほぼ同じです。
say a..z,A..Z,0..9,_
@ msh210 が好きですコメント内の提案ですが、「長すぎます!
コメント
- +1。もう少し興味深いですが、これらのいずれかが長くなります、すべて27バイト:
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210それでも’これ以上縮小することはできません… 25を管理しました:
say chr=~/\w/g for 1..255
…
回答
チェダー、 31 27バイト
->97@"123+65@"91+48@"58+"_"
これは、@"
演算子をよく示しています
@"
演算子。バグはJS範囲ではなくチェダー範囲を生成していたため、正しく機能しませんでした
説明
@"
演算子は@CᴏɴᴏʀO “Bʀɪᴇɴによって設計され、LHSからRHSまでの文字列範囲を生成します。単一演算子として使用すると、指定されたコードポイントで文字を返します(python “s chr
など)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
回答
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 | ^
回答
JavaScript(ES6)、62バイト
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
を返すため、文字列リテラルを返す関数よりも6バイトだけ短くなります。
コメント
回答
Haskell、38バイト
"_":["a".."z"]++["A".."Z"]++["0".."9"]
ここで説明するものはありません。
コメント
- 質問: ‘
:
と++
の違いは何ですか? - @Downgoat:
++
は2つの文字列を受け取り、それらを連結します。:
は、文字と文字列を受け取り、その文字を文字列の前に置きます。"_"++['a'..'z']...
も機能しますが、1バイト長くなります。
回答
PowerShell v3 +、 35 33バイト
-join([char[]](1..127)-match"\w")
動的配列を構築します1..127
、char
配列としてキャストします。これは、正規表現\w
で動作する-match
演算子に送られ、一致するすべての要素(つまり、正確に英数字とアンダースコア)が返されます。 )。これらの配列要素を-join
にカプセル化して、1つの文字列としてバンドルします。これはパイプラインに残り、出力は暗黙的です。
コメント
- ねえ、’は公平ではありません。私自身の解決策は、
0
… - @Joeyで始めたことを除いて同じです。 :D
- 特に些細で明白な解決策については、私は推測します;-)
回答
V、27バイト
i1122ñYpñvHgJ|éidd@"Í×
この回答はひどく複雑です。後で説明を投稿します。
16進ダンプ:
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.
コメント
- :D:D:Dチェダーはゴルフラングと結びついています!
回答
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
回答
ハスケル、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]
に変換し、結果を連結しますs。 >>=
の代わりにdo
を使用して2バイトを提供してくれたAndersKaseorgに感謝します。
代替案との比較:
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 __"
コメント
-
do
表記は2バイトを節約します:do(x,y)<-zip"aA0_""zZ9_";[x..y]
回答
C、50バイト
引数なしでf()
を呼び出します。
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
印刷
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
コメント
-
isalnum(n)|n==95&&putchar(n)
- そこに’のUBがあります。 ‘必要な引数を渡さなかった。
- @ orlp- iv id =の代わりに
putc
を使用した”637c69bd7c”>
。 putc
は、’が渡さなかったストリームへの書き込みも想定しています。関数自体は正常に機能します(putc
を完全に削除してみてください。そうすれば、機能します)。
If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2 / 6、 N1570 を参照してください。回答
/// 、63バイト
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
コメント
- どのように有効な答えですか? ‘がルールに違反しているようです。
- @nicaelどのルールですか?
- “上記の文字を9つ以上含む組み込み定数は許可されていません。” …明らかな何かが欠けていますか、@ Leaky?
- はい、 ‘組み込み定数を使用しなかったこと。
- わかりましたが、少なくともこれは奇妙です。間違いなく、OPは’シーケンスをコピーして貼り付けるように要求しません。’は面白くありません。
回答
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
文字列定数が許可されている場合、次は45バイトになります。
from string import* print("_"+printable[:62])
コメント
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun構文エラーがスローされます。
print('_',*filter(str.isalnum,map(chr,range(123))))
と同様のことを考えましたが、スペースを区切って印刷します。 OPはコメントで、’ …出力にスペースは一切許可されていないと述べました’。 - Python 2は、次のアプローチで1バイトを節約できます:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
回答
初めてのコードゴルフの試み!
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、KevinLauに感謝します。コメントのすべての助けをくれたKennyではありません。
コメント
- PPCGへようこそ!すべてのスペースを自由に削除してください!また、 C#でゴルフをするためのヒントでいくつかのヒントを確認してください。
- すばらしい-2バイト節約できました。 ‘このコードゴルフが本当に好きになり始めています:)
- AFAIK、
\w
正規表現クラスは英数字をカバーし、また、_
を使用すると、"\\w"
が正規表現一致関数に対して十分に有効になります。 - コードは関数である必要があります。またはステートメントではなく完全なプログラム。また、.NetFiddleを使用して、コードのデモンストレーションを共有します:)
- ” C#は’最適ではありませんcodegolf ” C#はゴルフをコーディングするのに十分楽しいと思います。私はそれが遊ぶのに素晴らしい主流の言語だと思います。あなたが勝つためにここにいるなら、あなたは失うでしょう。目標を学び、楽しい時間を過ごすこととして定義すると、常に勝ちます。
回答
回答
Object Pascal、 85 83 73バイト
文字のセットを使用した単なるオブジェクトパスカル。プロシージャの代わりに完全なプログラムを作成すると、2バイトが削減されます。プログラムキーワードを削除すると、さらに10バイト削減されます。
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
コメント
- 私はいつもそうだったし、おそらくそうするでしょうObjectPascalの正確な分類によって常に混乱します。 Turbo / Borland PascalとFreePascalは、役に立たない
program
キーワードがなくても確かに満足しています。 - @manatwork私はしませんでした’ tことを知っている。奇妙なことに、今ではここでパスカルの競争力が高まっています…
- 私が育った言語。まだ死んでいないことはわかっています…
- @rexkogitansええ、学校で学びましたが、’当時から何も覚えていません… ‘今またプログラミングで遊んでいます
回答
bash – 47 37バイト
man sh|egrep -o \\w|sort -u|tr -d \\n
システムの出力は次のとおりです。
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
役立つ提案をしてくれたDigitalTraumaに感謝します。
一部のシステムでは、iv id = “の代わりにascii
を使用できる場合があります。 885696af20 “>
バイトを保存します。
コメント
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTraumaありがとうございます!実験の結果、
\w
は_
と一致し、すでに大文字と小文字が区別されないため、さらに短縮される可能性があります。 - iv
man sh
の代わりにid = “caf9767759”>
がほとんどの環境で機能するはずです。それは私のものです。$ env|egrep -o \\w|sort -u|tr -d \\n
->0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
。
J
ではありません。悪い。回答
PHP、40バイト
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
コメント
- +1で優れています。補足:PHP 7.2では、将来のバージョンで未定義の定数に対してエラーがスローされることを示す警告が表示されます。 🙁
回答
網膜、 30 19 16 15 12バイト
この最新バージョンの元のアルファベットの試行。各文字はループで出力されます。
最初の行は空です。
; +T\`;w`w_
出力:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
最近の試みから4バイト離れたゴルフをしてくれたLeakyNunに感謝します。
コメント
- I ‘ dは、
w
が9つ以上の必要な文字を含む定数としてカウントされることを示しています。’おそらく右側を展開し、左側のw
をo
に置き換える必要があります。d
の代わりにEO
を使用してバイトを保存します。それぞれ5文字しか含まれていないためです。 - @ mbomb007
は、正規表現とは何の関係もありません。 ‘は、必要な63文字のリストに展開される省略形です。 ‘は\w
このケースについてorlpに具体的に質問します。 正規表現で。
回答
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
- @DrGreenEggsandIronManありがとうございます!しかし、改行は区切り文字として許可されていないと思います。チャレンジでは、”英数字とアンダースコアの文字列が表示されます…これ以上”
- ‘試したが’機能しない
8W:'\w'XX!
を実行できませんでした - @DrGreenEggsandIronMan非常に良い質問です! チャットで回答させてくださいもう少し文字を使用できるようにします
回答
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
回答
Dynalog APL 、18 バイト
∊"\w"⎕S"&"⎕UCS⍳255
印刷:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
コメント
- @user 上記の文字を9つ以上含む組み込み定数は許可されていません。
回答
Pyth、 13 12バイト
s:#"\w"0rk\|
U +0000からU + 007Bのregexに一致するすべての文字を検索します/\w/
。
O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
。
代替アプローチ:15バイト
ssrMc4"0:A[a{_`
基本的に、必要な半分の範囲を生成します:0-:, A-[, a-{, _-`
。
回答
CJam 、 15 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
回答
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でした。
回答
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_
回答
Hexagony、33
"A}_8_47<=">({a/[email protected]!\356);");
拡張:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
出力:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
プログラムの最初のバイトとして印刷できない文字0x1A
があることに注意してください。これにより、展開されたヘキサゴンの最初の行が少しずれて見えます。Martinに感謝します。このトリックを見せてくれたり、tを印刷するためのアルゴリズムを提案したりするアルファベット!
これは、六角形の両端と数字にa
とA
を格納することでアルファベットを印刷します。文字間の接合部に接する六角形の端にある26。これは次のようになります。
A \ / a | 26
次に、文字を出力してインクリメントし、数値をデクリメントするループに入ります。 1回の反復の後、次のようになります。
B \ / b | 25
など。初期化の線形コードは次のとおりです:0x1A " A } a
。制御フローの変更以外のループの線形コードは次のとおりです。; ) " ; ) { ( " =
。
カウンターがゼロに達すると、別のパスをたどって数値とアンダースコア。直線的に書かれているのは、x 3 5 6 8 4 7 9 ! ; { @
です。これにより、現在のメモリエッジの値が、すべての10進数を含む数値1203568479(x
のASCIIコードは120であることに注意してください)に置き換えられます。この数値を出力してから、Hexagonyの優れた機能を使用します。数値mod256をASCII文字として出力します。これはたまたま95、つまりアンダースコアです。
回答
Brainfuck、 114 103 98 90 76 71バイト
もう1つの些細な(現在は-些細な)解決策ですが、今回はBFです!
@primoのおかげで14(!)バイト節約できました。
@primoの提案により、さらに4バイト節約できました。範囲を後方に設定し、小文字を出力する前にインクリメントして別の範囲を保存しました。
新規(繰り返し4、71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
古い(値、114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
古い(繰り返し1、103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
古い(繰り返し2、90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
古い(繰り返し3、76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
8ビットのラッピングセルとラッピングメモリを想定しています。オンラインで試してみてください。
すべて印刷_AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
まず、この部分
+[--[<+++++++>->+<]>-]<<
これらを使用してテープを初期化します値
[91, 70, 49, 21, 7] ^
これは、私がモデル化した漸化式が基本的にf(x) = 7 * (3 * x + 1)
であるために機能します。漸化式とは何かについては、 @primo “s Hello、World!Answer を参照してください。
それなら、かなり簡単です。これらの値を有用な値に変更します。 (そしてアンダースコアを出力します)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
次に、単純なループは値を使用して残りの文字を出力します。印刷の前に増分を設定することで1バイトを節約します。
>>>[-<<.+<+.>>>]>[-<<.+>>]
より短いシーケンス生成を見つける必要があります。
うまく機能しているように見える漸化式を見つけましたが、ハントとペックが少ない、より短い漸化式がある可能性があります。
線形回帰計算機を使用しました可能な限り最短の線形漸化式を見つけるために、改善したい場合はおそらく他の式を見つける必要があります。
@primoは本当に漸化式を大幅に改善しました。
コメント
- 後方構造はどうですか?
+[--[<+++++++>->+<]>-]
- @primoうわー!それはどのように機能しますか?
- 3は不均一なので、256回完全にループします。
>-]
で終わることにより、最終項が1(x7)になることを確認できます。実際には、おそらく-
で開始する必要があります。これは、はるかに速く終了します。
回答
セソス、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ああ、そうですね、TIOキャッシュは時々混乱する可能性があります。