連結されたプログラム+出力が95個の印刷可能なASCII文字の順列である最短プログラム


12

可能な限り短く(バイトカウントで測定)、入力を受け取らず、コメントを含まず、連結されたプログラム+出力が正確に95文字の長さで、すべての印刷可能なASCII文字を含むような文字列/シーケンスを出力するプログラムを作成します一度だけ、すなわちプログラム+出力はASCIIコードの32から126と95文字の順列であります:

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

同点の場合、勝者は(95文字の)連結されたプログラム+出力が、レーベンシュタイン編集距離(つまり、1文字の削除、挿入、またはASCII順にするために必要な置換)。


2
これは、たとえば、プログラムに繰り返し文字が含まれている場合、自動的に失格となることを意味しますか?ラフです。
— ブレッドボックス


1
また、古い者echo $0が失格かどうかを判断することもできます。
— ピーターテイラー

3
印刷可能なアスキー文字の範囲外の文字(およびおそらくその複製)は許可されていますか?またはプログラム+出力は正確に一度、すべての印刷可能な文字が含まれている、しなければならないと何よりも?
— primo

1
@primo許可されていると思います。重複を使用する「シフトアンド評価」ソリューションを作成する時期だと思います(ただし、文字列リテラルを取得するのは難しいでしょう)
— ジョンドヴォルザーク

回答:


12

GolfScript、14文字

{`),32>46-^}.~

出力:

 !"#$%&'(*+/015789:;<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_abcdefghijklmnopqrstuvwxyz|

挑戦(少なくとも私が理解している限り)は、95の印刷可能なASCII文字を出力する最短のプログラムを書くのではなく、95の印刷可能なASCII文字の順列であるプログラムと出力を持つプログラムを書くことでした。
— フランクシュミット

すみません、私の間違いです。タイトルでは「プログラム+出力」と表示されますが、質問の後半では、連結されたプログラム+出力が表示されます。
— フランクシュミット

),- ワオ。私はそれが好きです。
— ジョン・ドヴォルザーク

1
@JanDvorak codegolf.SE:近かっことコンマに人々が興奮する唯一の場所。:P
— ドアノブ

golfscriptの@Doorknobは、「正しいuncons(rparen)で、そのサイズの配列(コンマ)」を意味します。実際には、1文字(右中)で短縮された文字列と、その文字のASCII位置(|で)のすぐ下で終わる配列が残っています。印刷不可能な文字、ピリオド、およびxor(ここでは対称集合の差)をソースコード(減算を使用)で切り取り、正しい巻き毛を言いました。これで完了です。そして、そう、string xor arrayはstringです。
— ジョンドヴォルザーク

6

Perl、89文字

これは私がこれまでにできた最高の方法です。

q< !"#%&'()+/8:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\^_`abcdefghjklmosuvwxz|>;
print~-$=.73*2,y[]{}

Perl minutaeに精通していない人のために、printステートメントへの2つの引数は~(-($=)) . (73 * 2)and としてレンダリングできますtr///。

プログラムは6文字を出力します。

591460

私はPerlでの考えることができることを残念ながら一つ一つの反復構築物(for、while、until、map、grep)と共有し、少なくとも一つの文字print。出力に改行を含めることが許可されている場合、Perl 5.010を使用して87文字のソリューションを作成できます。

q{ !"#%&'*,-./0:;>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^`bcdfgjkmnoprtuvxz|~}while($_+=say)<9

もっと大きな数字を印刷できるかどうか見てみましょう:
— ジョンドヴォルザーク

ええと...私のために2行目を翻訳できますか?
— ジョンドヴォルザーク

1
@JanDvorak $=は、現在の出力デバイスの水平線の数です。デフォルトでは60. ~-$=は、2の補数の負の60のビット単位の反転であり、たまたま59です 73*2146です。.そして,、あなたがそれらに期待することをしてください。y[]{}言い換えるとtr///、音訳演算子です。それは取る$_あなたがそれを置き換えるために任意の文字を与えていないので、何もしません。置換された文字数を返します0。したがって、~-$= . 73*2 , y[]{}= 59 . 146 , 0= '591460`になります。
— ダン

6

PHP 67バイト

<?=U4eB1gkFdA6J9snZD2IE8y5PhwQV^xHGmqYMfNjKpbR3vcLalCWi0_TtrOSXouz;

出力:

-|"/@>& *+}:[!],'~(){.\`7#%$

65バイトのソリューションがあり、28文字ではなく30文字を出力する必要があるように見えますが、私はそれを揃えることができませんでした。OSXouz代わりに、6つの未使用文字が文字列リテラルの1つに追加されています。

編集:さらに検討すると、この方法で28を超える文字を生成することはできません。UPPER ^ lowerは常に32〜63の文字になり@[\]_`{|}~ます。そのため、10桁すべてが必要です。残りの22個のうち4個はスクリプト自体で使用され、文字のみで取得できる18個のみが残ります。ただし、タイブレーカーは大幅に改善される可能性があります。


ああ、確かに、裸語。どうして忘れたの?
— ジョン・ドヴォルザーク

3

ルビー、91文字

%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcefghijklmnqvwxyz|~};puts(?@‌​.ord*98+1)

出力6273。

%{...} ヤン・ドヴォルザークから盗まれたトリック


コメントを省く。明確に述べたように。
— ヨハネ

@JohannesKuhnああ、それに気づかなかった。編集しました。
— ドアノブ

%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts(?@.ord*98+1)(改行の代わりに)セミコロンを移動して印刷可能な区切り文字として使用し、中括弧内の「ord」の文字を削除して、(91文字の)あなたが望むものです
— 解像度

うん@res、それはすべてのこれらの文字を管理するのは難しい:P
— ドアノブ

現在、\は3回含まれています。
— ハワード

3

Perl、61文字

print$:x8^CJIBQTOWAEULHVGFNMKRPZY,q<#"/;*g~?|={.>&+u15m97ws26

出力:

c@db[yo]le_ah\jfD`kX}zS-! %)('v304

$:デフォルトは" \n-"です。x88回繰り返します。その後、24文字の結果は、23文字のベアストリングでビット単位でxoredされます(最後-はそのままです)。2番目の部分は、ビット単位の12文字のqストリングと、10文字のベアストリングです(最後の2文字は破棄されます)。


1
プログラムの長さは61文字です。
— 解像度

ありがとう。EOFが原因で、テキストエディターから62文字が報告されました。
— グリムミー

1

ルビー、95文字、6編集

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

うん。それでおしまい。印刷されない、ただのフローティング文字列リテラルです。Rubyは、percent-type-delimiter形式の文字列リテラル(Perlから借用されていると思います)をサポートしています-区切り文字は任意の非英数字で、開始区切り文字が開始ブラケット(のいずれか[({<)である場合、終了区切り文字は対応します閉じ括弧(ネストされた括弧が許可されます)。

私はこれがベースライン提出に近いことを理解していますが、誰かが実際に何かを印刷するか、異なる開始および終了デリミタを持つ2文字のフリーフォーム文字列リテラルを持つ言語がない限り、これは最高です。


0

Tcl 96、編集距離12

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

スペースの1つはタブにする必要があります、私は恐れている
— ジョンドヴォルザーク

タブまたはスペースは印刷可能ですか?
— ヨハネ

タブは印刷不可(ASCII 9)ですが、スペースは印刷可能(ASCII 32)です。
— ジョンドヴォルザーク

1
[あなたが答えた後にのみOPがこれを明確にしたことを見た:)]
— flornquake

1
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~} 95文字を使用して動作するようですか?(ご応募ありがとうございます。カメレオンについては申し訳ありません。残念ながら私は急いで編集しました。別の方法で行うべきでした。)
— 解像度
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.