ควินที่จัดทำดัชนีได้


14

เป้าหมายของการท้าทายนี้คือการสร้างโปรแกรมที่ให้ผลลัพธ์ตัวอักษรที่ n ของซอร์สโค้ดโดยที่ n ถูกกำหนดเป็นอินพุตให้กับโปรแกรม เช่นเดียวกับการท้าทายควินหลามส่วนใหญ่คุณไม่ได้รับอนุญาตให้อ่านซอร์สโค้ดของคุณเป็นไฟล์หรือใช้ฟังก์ชันควินินในตัว

อินพุต

จำนวนเต็ม 0 <= n <len (โปรแกรม)

เอาท์พุต

อักขระที่ n (ไม่ใช่ไบต์) ของโปรแกรมของคุณ

การชนะ

เช่นเดียวกับคำถาม codegolf ส่วนใหญ่คุณจะได้รับความท้าทายโดยใช้จำนวนไบต์ต่ำที่สุดในการแก้ปัญหา

โบนัส

-5% หากโปรแกรมของคุณรองรับสไตล์ดัชนีลบ (เช่น -1 จะเป็นอักขระตัวสุดท้ายของโปรแกรมของคุณ) หากใช้กับโบนัสด้านล่างช่วงของคุณจะต้องสนับสนุนดัชนีเชิงลบ
-20% หากโปรแกรมของคุณรองรับช่วงเป็นอินพุต (ทุกรูปแบบ) นอกเหนือจากข้อกำหนดข้างต้น
-25% หากโปรแกรมของคุณเติมโบนัสทั้งคู่

ลีดเดอร์

นี่เป็นตัวอย่างข้อมูลเพื่อสร้างทั้งกระดานผู้นำปกติและภาพรวมของผู้ชนะตามภาษา

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

# Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น

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

หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของสองไฟล์หรือคุณต้องการแสดงรายการการลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:

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

นอกจากนี้คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างกระดานแต้มนำ:

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


ควินอินเป็นสิ่งต้องห้ามหรือไม่?
Mego

@Mego ใช่พวกเขาเป็น
TheNumberOne

โบนัสกองซ้อน (100% - 20% - 5% = 75%) หรือทวีคูณ (100% * 80% * 95% = 76%)?
ETHproductions

โปรแกรมที่ไม่อ่านจำนวนที่ป้อนเข้าจริงหรือไม่?
Neil

@ETHproductions Stack
TheNumberOne

คำตอบ:


12

Pyth, 0.75

(เกิดขึ้นเป็นภาษาพูดหลายภาษา CJam และภาษาอื่น ๆ อีกมากมาย)

0

คาดว่าอินพุตใน STDIN:

llama@llama:~$ echo 0..0 | pyth -c '0'
0

แน่นอนว่างานหลักใด ๆ ไม่ใช่ความท้าทายที่น่าสนใจที่สุดใน Pyth


1
มันเกิดขึ้นเป็นพูดได้หลายภาษาในภาษาอื่น ๆ อีกมากมายเช่นกัน
Mama Fun Roll

ทำงานใน PlatyPar ด้วย
Cyoce

1
และ Japtt และ Jolf และเกือบทุกภาษาที่มีเอาท์พุทโดยนัย
ETHproductions

9
และ PHP ซึ่งเป็นภาษาที่ดีที่สุดสำหรับการเล่นกอล์ฟอย่างชัดเจน
user253751

8

Javascript ES6, 31 ไบต์

$=_=>`$=${$};$()`[prompt()];$()

คำอธิบาย

กรอบ quine มาตรฐาน:

$=_=>`$=${$};$()`;$()

[prompt()]ซึ่งเป็น addon รับค่าที่ดัชนีอินพุตของสตริง quine ที่เป็นผลลัพธ์


6

𝔼𝕊𝕄𝕚𝕟, 9 ตัวอักษร / 19 ไบต์

⟮ɕṡ+ᶈ0)⎖ï

Try it here (Firefox only).

Ay, 19th byte!

0 ทำงานได้ดีเกินไป (และดีกว่ามาก) แต่มันก็เล็กน้อยเกินไปสำหรับความชอบของฉัน

นอกจากℹ ï,⧺ïนี้ยังใช้งานได้ แต่ไม่อนุญาตให้ใช้ฟังก์ชันควินิน

คำอธิบาย

⟮ɕṡ+ᶈ0กรอบมาตรฐานคือควิน

)⎖ï รับค่าสตริง quine ที่ได้และได้รับอักขระที่ดัชนีอินพุต


โซลูชันโบนัส 11.4 ตัวอักษร / 25.65 ไบต์

⟮ᵖ…ɕṡ+ᶈ0;ôᵍï

Try it here (Firefox only).

อันนี้มีคุณสมบัติสำหรับโบนัส 5% แต่ก็ยังไม่ชนะการส่งต้นฉบับของฉัน

คำอธิบาย

อันนี้ใช้สแต็ค ᵖ…ɕṡ+ᶈ0;เพียงแค่ส่งอักขระแต่ละตัวของสตริง quine ไปยังสแต็กและôᵍïส่งออกอักขระโดยตรงที่ดัชนีอินพุต (บวกหรือลบ) ในสแต็ก


ทำไมคุณยังไม่ได้ทำการเข้ารหัสสำหรับสิ่งนี้?
Addison Crump

การอัพเดตกำลังมาเร็วเกินไป! ไม่ทัน!
Mama Fun Roll

5

CJam, 12.35 ไบต์

{s"_~"+ri=}_~

โปรแกรมมีความยาว13 ไบต์และมีสิทธิ์รับโบนัส× 0.95 ลองออนไลน์!

มันทำงานอย่างไร

{         }      Define a code block.
           _~    Push a copy and execute the copy.
 s               Cast the original code block to string.
  "_~"+          Append "_~".
       ri        Read an integer from STDIN.
         =       Retrieve the character at that index.

4
แน่นอนว่า0จะสั้นกว่านี้เล็กน้อย ...
Dennis

4

ทับทิม, 53 * 0.75 = 39.75

$><<(<<2*2+?2)[eval gets]
$><<(<<2*2+?2)[eval gets]
2

สร้างสตริง HEREDOC คั่นด้วยตัว2ของมันเองเชื่อมมัน ( *2) แล้วเพิ่มในขั้นสุดท้าย2ผ่านตัวอักษรตัวอักษร แบ่งออกเป็นชิ้นโดยใช้ Ruby ในตัวString#[]ซึ่งรองรับจำนวนเต็มบวกจำนวนเต็มลบและช่วง (ป้อนข้อมูลในฟอร์มm..n) $><<เป็นเอาท์พุท ( putsต้องการพื้นที่เพิ่มเติมที่นี่)


ฉันคิดว่าgets.to_iจะทำในสิ่งเดียวกันeval getsและชัดเจนกว่า มันจะไม่จัดการอินพุตที่ไม่ใช่จำนวนเต็ม แต่ก็ไม่จำเป็นต่อไป
คดีของกองทุนโมนิกา

ปกติแล้วฉันจะทำ แต่สิ่งนี้จะได้รับโบนัสสำหรับการจัดการช่วง (รวมถึงโบนัสที่ไม่มีอยู่สำหรับการทำให้สมบูรณ์)
ประวัติศาสตร์ประจำ

อาฉันคิดถึงเรื่องนั้น ความผิดฉันเอง.
คดีฟ้องร้องกองทุนโมนิก้า

3

Ruby, 38.25 ไบต์

a="a=%p;$><<(a%%a)[eval gets]";$><<(a%a)[eval gets]

สนับสนุนดัชนีและช่วงลบ ฉันหยิบทั้งสองอย่างโจ๋งครึ่ม$><<และevalเล่ห์เหลี่ยมจากฮิสโทแคตต์และเคล็ดลับควินินคือคนอื่นที่จะเริ่มต้นด้วยดังนั้นฉันจะทำให้ CW นี้


1

Python 2, 46.55 ไบต์

a="a=%r;print(a%%a)[input()]";print(a%a)[input()]

รองรับดัชนีเชิงลบ


ใช่สิ่งนี้สนับสนุนตัวบ่งชี้เชิงลบ
แมว

1

Haskell, 122 ไบต์

main=getLine>>= \i->putChar$(!!(read i))$p++show p where p="main=getLine>>= \\i->putChar$(!!(read i))$p++show p where p="

Ungolfed:

main=getLine>>= \i->putChar$(!!(read i))$p++show p
 where p="main=getLine>>= \\i->putChar$(!!(read i))$p++show p\n where p="

1

Befunge 93, 5 ไบต์

นี่มันช้ามาก ๆ แต่ฉันจะโพสต์ใหม่:

&0g,@

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