文字を共有せずに文字列を印刷する


15

編集:空白を再利用できます。

あなたの仕事は、同じ言語でn個のプログラム(または関数、またはパラメーターまたは関数名を使用せずに関数の本体)を書くことです。KプログラムTHは、出力すべき(カーディナル)数kの標準英語(オプション最後の改行を有する)小文字です。したがって、最初のプログラムは出力する必要がoneあり、2番目のプログラムは出力する必要がありますtwo。2つの部分を持つ数値の場合は、twenty-one

ただし、提出物の2つのプログラムは、非空白文字または有用な作業を行う空白文字を共有できません。たとえば、あなたの最初のプログラムはただではない場合"one"、その後のどれ" o ne、あなたの他のプログラムで再び使用することはできません。

空白文字(スペース、改行、タブ)を2つ以上のプログラムで使用できます。これらは、セパレーターまたはインデントとしてのみ機能し、それ自体では何もしません。したがって、それらをWhitespace言語で再利用したり、複数のプログラムの文字列で使用したりすることはできません。

印刷可能なASCII文字、タブ、および改行(CRおよびLFを含む)のみを使用できます。すべてのプログラムには少なくとも1文字が含まれている必要があります。

スコアは1 /プログラムサイズ^ 1.5の合計です。最高スコアが勝ちます。このスタックスニペット(またはこのCJamコード)を使用して、スコアを計算できます。

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>


1つのより良いスコアリングルールは、1 /(プログラムサイズ+ c)^ 1.5の合計です。ここで、cは定数です。しかし、変更するにはおそらく遅すぎると思います。
jimmy23013

高い基数に到達するための乗数を追加できますか?私は他のすべてよりも高い12になりましたが、それでも負けています。
mbomb007

@ mbomb007意図的にHeadsecksのスコアを低くして申し訳ありません。しかし、Headsecksが他の人と同じようなスコアを持っている場合、Glyphoが勝ちすぎていると思います(Lenguageは言うまでもありません)。
jimmy23013

私は空白でこれをしたい:(
YoYoYonnY

1
@ mbomb007同様の質問を再度尋ねる場合、おそらくスコアのプログラムサイズに小さな定数を追加します。しかし、この質問で変更するにはあまりにもarbitrary意的です。
jimmy23013

回答:


6

gs2、0.38669200758867045

3つを除くこれらすべてのプログラムから空白を削除します。これは、(咳)読みやすさのためだけです。16は、便利なこと(スタックアンダーフローによって)クラッシュGS2プログラムされている彼らはquinesなります

1(3バイト)

one

2(1384バイト)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

3(92バイト)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

重要な空白がたくさんあるので、ここに16進ダンプがあります。最初に単一の改行文字があります:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

4(276バイト)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

5(178バイト)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

6(3バイト)

six

その要件は見当たりませんでした-中間ソリューションを修正します。
リン

、(タブ)、(LF)、および(CR)を使用20して使用できますか?7E090A0D
リン

はい。CRを明示的に許可するように編集されました。
jimmy23013

15はタイプミスでした。行って削除しました。3つ修正します。
リン

2
プログラム16は、基本的にソースコードをSTDOUTにダンプし、STDERRでエラーを表示する構文エラーです。コンセンサスはこれで問題ないようです(賞賛に値します)が、答えにそれを記載する必要があります。
デニス

13

CJam、0.24075

プログラム

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

使用するために彼の提案のために、@ user23013への感謝'のために6

出力、長さ、スコア、使用文字

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

CJamインタープリターで自分で結果を確認します。


6

不眠症、0.100688383057110116

物事を始めるためだけに。これが勝つことはまずありません。現在のスコアリングスキームでは、印刷可能なすべての言語oneは、5文字以下では圧倒的な利点があります。

1(8バイト、0.04419417382415922)

uuyp>~p~

2(9バイト、0.037037037037037035)

oeoojdoLj

3(21バイト、0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

4(23バイト、0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

ヘッドデッキ、0.044623631135793776

ここで生成

この言語は単純なBF置換で、重要なのは8を法とする文字値のみです。

残念ながら、12に到達することができるにもかかわらず、長いプログラムはより悪いスコアを与えます!(印刷不可能なASCIIとUnicodeを使用できれば、さらに高くなる可能性があります。)

1

##%%%%%%%&##$%&#&%&%%%%%%%%%&

--------+--.+++,-..+++.--------.

5555555535563334566555555555555633333333336555555555555566

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

セブン

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

8

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

十一

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

12

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

印刷可能なASCII文字、タブ、および改行のみを使用できます。
jimmy23013

@ user23013私はできるだけ多くのことを行い、12になりました。
mbomb007

2

///、0.19245008972987526

one

この答えは@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳の答えに触発された

現在のスコアリングスキームでoneは、5文字以下で印刷できる言語には圧倒的な利点があります。


スコアリングアルゴリズムには抜け穴があるようです。よくやった。
デニス

さて、この質問は、より良いスコアリング方法を得るためだけにサンドボックス化されています。そして、それはまだうまくいきませんでした...これはPHP、ASPなどでも働きます。
jimmy2301315年

0

SmileBASIC、.10062

"1"

?"one

"二"

PRINT MID$(@two,1,3)

私の他の答えはより興味深いですが、これはより高いスコアを取得します。

最長のチェーンを取得するための重要な戦略は、MORE文字を使用してUNIQUE文字を保存することです(たとえば、x - -xプログラム2 で使用して保存するy + yてプログラム3する)。

スコアリングシステムの問題は、3つの長いプログラムよりも2つの短いプログラムのスコアが高いことです。したがって、現在のプログラムを長くする場合、後のプログラム用に文字を保存する理由はありません。

また、個々の短いプログラムは、小さい合計サイズよりも高く評価されます。スワップ?してPRINTして回答する、1文字節約できますが、スコアは半分です。

タイブレーカーとしての合計サイズで、プログラムののみに基づいた方が良いと思います。


3
私は両方のプログラムが共有していると思うo...
JayCe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.