พิมพ์สตริงโดยไม่มีการแชร์อักขระ


15

แก้ไข: อนุญาตให้นำมาใช้ซ้ำช่องว่าง

งานของคุณคือการเขียนโปรแกรมn (หรือฟังก์ชั่นหรือส่วนของฟังก์ชั่นโดยไม่ต้องใช้พารามิเตอร์หรือชื่อฟังก์ชั่น) ในภาษาเดียวกัน โปรแกรมk th ควรส่งออกหมายเลข(cardinal) kในภาษาอังกฤษมาตรฐานเป็นตัวพิมพ์เล็ก (พร้อมบรรทัดใหม่ที่เป็นทางเลือก) ดังนั้นโปรแกรมแรกควรเอาท์พุทoneที่สองควรเอาท์พุทtwoฯลฯ twenty-oneสำหรับจำนวนที่มีสองส่วนพวกเขาควรจะแยกจากกันโดยยัติภังค์เหมือน

แต่ไม่มีโปรแกรมสองโปรแกรมในการส่งของคุณที่สามารถแชร์อักขระที่ไม่ใช่ whitespace หรืออักขระ whitespace ที่ทำงานที่มีประโยชน์ ตัวอย่างเช่นถ้าโปรแกรมแรกของคุณเป็นเพียง"one"ไม่มีแล้ว" o nและeสามารถนำมาใช้อีกครั้งในโปรแกรมอื่น ๆ ของคุณ

คุณสามารถใช้อักขระช่องว่าง (ช่องว่างการขึ้นบรรทัดใหม่และแท็บ) ในสองโปรแกรมขึ้นไปหากเป็นเพียงตัวคั่นหรือการเยื้องและไม่ต้องทำอะไรด้วยตนเอง ดังนั้นคุณไม่สามารถใช้ซ้ำในภาษาของWhitespace ได้และคุณไม่สามารถใช้พวกมันเป็นสตริงในโปรแกรมมากกว่าหนึ่งโปรแกรม

คุณสามารถใช้อักขระ ASCII ที่พิมพ์ได้แท็บและบรรทัดใหม่ (รวมถึง CR และ LF) ทุกโปรแกรมต้องมีอย่างน้อย 1 ตัวอักษร

คะแนนของคุณคือผลรวมของ 1 / ขนาดโปรแกรม ^ 1.5 คะแนนสูงสุดชนะ คุณสามารถใช้ Stack Snippet ( หรือรหัส 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 / (ขนาดโปรแกรม + c) ^ 1.5 โดยที่ c เป็นค่าคงที่ แต่ฉันคิดว่ามันอาจจะสายเกินไปที่จะเปลี่ยน
jimmy23013

เราสามารถเพิ่มตัวคูณเพื่อให้ได้จำนวนที่สูงขึ้นเนื่องจากนั่นเป็นเป้าหมายหรือไม่? ฉันได้สิบสองสูงกว่าคนอื่น ๆ ทั้งหมด แต่ก็ยังแพ้อยู่
mbomb007

@ mbomb007 ขอโทษที่ทำให้ Headsecks ทำคะแนนต่ำกว่าโดยจงใจ แต่ถ้า Headsecks มีคะแนนคล้ายกันกับคนอื่น ๆ ฉันคิดว่า Glypho จะชนะมากเกินไป (ไม่ต้องพูด Lenguage)
jimmy23013

ฉันต้องการทำสิ่งนี้ในช่องว่าง :(
YoYoYonnY

1
@ mbomb007 ถ้าฉันถามคำถามที่คล้ายกันอีกครั้งฉันอาจจะเพิ่มค่าคงที่เล็ก ๆ ให้กับขนาดโปรแกรมในคะแนน แต่มันก็ไม่มีเหตุผลที่จะเปลี่ยนแปลงคำถามนี้
jimmy23013

คำตอบ:


6

gs2 , 0.38669200758867045

ลบช่องว่างออกจากโปรแกรมเหล่านี้ทั้งหมด แต่มีสามข้อให้อ่านได้(ไอ)เท่านั้น หนึ่งและหกคือโปรแกรม gs2 ที่ผิดพลาด (โดยการล้นสแต็ก) ซึ่งทำให้พวกเขาสะดวก

หนึ่ง (3 ไบต์)

one

สอง (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

สาม (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

ช่องว่างที่มีนัยสำคัญจำนวนมากดังนั้นนี่คือการถ่ายโอนข้อมูลฐานสิบหก มีอักขระป้อนบรรทัดเดียวที่เริ่มต้น:


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

สี่ (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

ห้า (178 ไบต์)

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

หก (3 ไบต์)

six

ฉันไม่เห็นความต้องการนั้น - ฉันจะแก้ไขและแก้ปัญหาระดับกลาง
ลินน์

ฉันได้รับการใช้งาน20ผ่าน7E, 09(แท็บ) 0A(LF) และ0D(CR) ใช่มั้ย?
ลินน์

ใช่. แก้ไขเพื่ออนุญาต CR อย่างชัดเจน
jimmy23013

1ในห้าเป็นพิมพ์ผิด; ฉันไปแล้วและนำออกไป ฉันจะแก้ไขสามตอนนี้
Lynn

2
โปรแกรมหนึ่งและหกเป็นข้อผิดพลาดทางไวยากรณ์ที่ถ่ายโอนซอร์สโค้ดไปยัง 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 สำหรับข้อเสนอแนะของเขาที่จะใช้'สำหรับหก

เอาต์พุต, ความยาว, คะแนน, ตัวอักษรที่ใช้

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

เพียงเพื่อเริ่มต้นสิ่งต่าง ๆ มันไม่น่าเป็นไปได้มากที่จะชนะ ภายใต้รูปแบบการให้คะแนนปัจจุบันภาษาใดก็ตามที่สามารถพิมพ์ได้one5 ตัวอักษรหรือน้อยกว่านั้นมีข้อได้เปรียบ

หนึ่ง (8 ไบต์, 0.04419417382415922)

uuyp>~p~

สอง (9 ไบต์, 0.037037037037037035)

oeoojdoLj

สาม (21 ไบต์, 0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

สี่ (23 ไบต์, 0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

Headsecks , 0.044623631135793776

สร้างที่นี่

ภาษานี้เป็นการแทนที่ค่า BF อย่างง่ายโดยสิ่งเดียวที่สำคัญคือค่าตัวอักษรโมดูโล 8

น่าเสียดายที่โปรแกรมที่ยาวกว่านั้นให้คะแนนแย่กว่าเดิมถึงแม้จะสามารถทำได้สิบสองคะแนนก็ตาม! (ฉันสามารถสูงขึ้นได้ถ้าฉันสามารถใช้ ASCII ที่ไม่สามารถพิมพ์ได้และ Unicode)

หนึ่ง

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

สอง

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

สาม

5555555535563334566555555555555633333333336555555555555566

สี่

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

ห้า

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

หก

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

เจ็ด

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

แปด

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

เก้า

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

สิบ

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

สิบเอ็ด

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

สิบสอง

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

คุณสามารถใช้อักขระ ASCII, แท็บและการขึ้นบรรทัดใหม่ที่พิมพ์ได้เท่านั้น
jimmy23013

@ user23013 ฉันทำมากเท่าที่จะทำได้และไปถึง 12
mbomb007

2

/// , 0.19245008972987526

one

คำตอบนี้ได้แรงบันดาลใจจากคำตอบของ @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ ซึ่งเขาพูด

ภายใต้รูปแบบการให้คะแนนปัจจุบันภาษาใดก็ตามที่สามารถพิมพ์ได้one5 ตัวอักษรหรือน้อยกว่านั้นมีข้อได้เปรียบ


ตกลงอัลกอริทึมการให้คะแนนดูเหมือนจะมีช่องโหว่ เล่นดี.
เดนนิส

ทีนี้คำถามนี้ถูกทดลองแบบแซนด์บ็อกซ์มานานเพื่อให้ได้วิธีการให้คะแนนที่ดีขึ้น และมันก็ยังทำงานได้ไม่ดี ... มันใช้งานได้กับ PHP, ASP และอื่น ๆ อีกมากมาย
jimmy23013

0

SmileBASIC, .10062

"หนึ่ง"

?"one

"สอง"

PRINT MID$(@two,1,3)

คำตอบอื่น ๆ ของฉันน่าสนใจยิ่งขึ้น แต่อันนี้ได้คะแนนสูงกว่า

กลยุทธ์ที่สำคัญในการรับสายโซ่ที่ยาวที่สุดคือการใช้อักขระเพิ่มเติมเพื่อบันทึกบนอักขระ UNIQUE (ตัวอย่างเช่นใช้x - -xในโปรแกรม 2 เพื่อบันทึกy + yสำหรับโปรแกรม 3)

ปัญหาของระบบการให้คะแนนคือมันทำคะแนนให้โปรแกรมสั้น ๆ 2 รายการได้ดีกว่าโปรแกรมยาว 3 รายการดังนั้นจึงไม่มีเหตุผลที่จะบันทึกอักขระสำหรับโปรแกรมในภายหลังหากมันทำให้โปรแกรมปัจจุบันยาวขึ้น

นอกจากนี้ยังให้คุณค่าโปรแกรมสั้น ๆ แต่ละรายการสูงกว่าขนาด TOTAL ที่เล็กลง ถ้าฉันสลับ?และPRINTในคำตอบของฉันฉันสามารถบันทึก 1 ตัวละคร แต่คะแนนของฉันคือครึ่งมาก

ฉันคิดว่ามันคงจะดีกว่าถ้าพิจารณาจากจำนวนโปรแกรมที่มีขนาดทั้งหมดเป็น tiebreaker


3
ฉันคิดว่าทั้งสองโปรแกรมกำลังแบ่งปันo...
JayCe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.