โปรแกรมการให้คะแนนด้วยตนเอง


15

เรามีความท้าทายการส่งออกคะแนนของคุณเองแต่มันดูเหมือนว่าทุกคำตอบมีเพียง hardcode การส่งออกและที่น่าเบื่อ 1 ดังนั้นขอให้มีความท้าทายใหม่ ผลลัพธ์ของโปรแกรมของคุณต้องมีความยาวของตัวเองในไบต์ตามด้วยสตริง" bytes"แต่เพื่อป้องกันไม่ให้การแก้ปัญหา hardcoded ถ้าเราลดขนาดของมันโดยการลบใด ๆหนึ่งไบต์, " bytes"โปรแกรมใหม่ยังต้องส่งออกก็นับไบต์ใหม่ยังคงตามมาด้วย เอาต์พุตไม่จำเป็นต้องคำนึงถึงขนาดตัวพิมพ์ คุณอาจเลือกที่จะแสดงบรรทัดใหม่ที่ต่อท้าย

คำตอบของคุณจะได้รับคะแนนเป็นไบต์ด้วยไบต์ที่น้อยลงจะดีกว่า


1: ฉันชอบคำตอบจริงๆ


บางทีคุณอาจเปลี่ยนชื่อของความท้าทายเป็น "โปรแกรมแก้ไขคะแนนด้วยตนเอง" หรือบางอย่างที่คล้ายกัน
dylnan

คุณสามารถใช้ภาษาที่ถูกต้องหรือตีความได้เฉพาะ?
Logern

@Logern คุณสามารถใช้ได้เช่นกัน
โพสต์ร็อค Garf Hunter

2
โอ๊ะ ฉันใช้เวลาครึ่งชั่วโมงในการแก้ปัญหา Hexagonyแต่เมื่อฉันไปทดสอบการลบไบต์ทำให้รูปหกเหลี่ยมหดตัว ! :(
Jo King

1
@WW สิ่งที่ฉันหมายถึงคือ " 1 bytesเป็นไวยากรณ์ผิดทางเทคนิค แต่สมมติว่าภาษาไม่มีการส่งออกสตริง" ไบต์ "ใน <= 2 ไบต์โปรแกรมจะยาวกว่า 3 ไบต์ดังนั้นจึงไม่มี สสาร "- มันไม่สำคัญเลย
user202729

คำตอบ:


16

แบ็คแฮนด์ , 40 36 29 ไบต์

vv""sseettyybb  ""jjHHOO]

ลองออนไลน์! ตรวจสอบ!

เมื่อสงสัยให้เพิ่มทุกอย่างขึ้นเป็นสองเท่า สิ่งนี้ใช้ความสามารถของแบ็คแฮนด์ในการย้ายมากกว่าหนึ่งขั้นในแต่ละครั้งเพื่อนำความซ้ำซ้อนมาใช้ unprintables ทั้งหมดมีค่าไบต์ 28

คำอธิบาย:

โปรแกรมที่ไม่ได้รับรังสี:

v       Reduce step count to 2
  "    Start string literal
    s e t y b        Push the " bytes" part of the output
                  " Push 28 twice and end the string literal
                       j    Jump to the 28th position (0 indexed) 
                             ]   Increment the 28 to 29
                           O     Print the 29
                         H       Halt and output the entire stack

โปรแกรมฉายรังสี:

หากตัวละครใด ๆ ถูกลบตัวละครทุกตัวหลังจากนั้นจะถูกเลื่อนลง

vv"sseettyybb
v " s e t y b     The same instructions are still executed

อย่างไรก็ตามแทนที่จะกระโดดไปที่]มันแทนที่จะสะท้อนออกจากจุดสิ้นสุดของโปรแกรมและลงจอดบนOแทน

                             v  28th character (0 indexed)
vv""sseettyybb       ""jjHHOO]
v""sseettyybb       ""jjHHOO]OOHHjj"".....
                             ^ 28th character, reflecting off the end of the code

3

เวทมนตร์รูน 47 ไบต์

>>yyLL     @"setyb 64"/
"47 bytes"@"setyb 64"L\

ลองออนไลน์!

ซึ่งพอร์ตของGeiger Counterของฉันตอบมากกว่าหรือน้อยกว่าแต่มีเอาต์พุตต่างกัน (ซึ่งก็คือพอร์ตของคำตอบ Klein)

>>yyLLจำเป็นสำหรับ Runic ในการสร้าง (อย่างน้อย) หนึ่ง IP รวมสอง IPS และสะท้อนกลับไปทางซ้ายเพื่อให้การแปรผันทั้งหมดส่งผลให้เกิด IP ที่เคลื่อนที่ซ้ายเดียว อาจถูกแทนที่ด้วยyy<<แต่ไม่ได้บันทึกไบต์ใด ๆ

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

แม้ว่าพื้นที่ส่วนเกินจะน่าผิดหวัง แต่ความพยายามทั้งหมดในการลดขนาดนั้นมีผลในโปรแกรมที่ใหญ่กว่าโปรแกรมขนาดเดียวกันหรือโปรแกรมที่ไม่สามารถป้องกันรังสีได้ 100% ทั้งไคลน์และ> <> คำตอบที่นี่ใช้คุณสมบัติที่ไม่มีใน Runic


2

> <> , 43 39 ไบต์

||vn-{"' bytes"-10/
 o>o<"38 bytes"[0/0

ลองออนไลน์! ตรวจสอบ!

ในโปรแกรมที่ไม่ฉายรังสีเราเพิ่ม0ไปที่'(39) และในโปรแกรมฉายรังสีเราข้าม 0 และเพิ่ม-1เข้าไปแทน 38 bytesหากสิ่งที่ถูกลบออกจากแถวบนสุดที่เราเปลี่ยนไปแถวด้านล่างแทนและเอาท์พุทเพียง


2

Hexagony , 71 ไบต์

//.........||.>e;s;@..\;t;y;b<>}F"+!P0;/|/F!P0$@;<...t;ye;bs/.........)

ลองออนไลน์! ตรวจสอบ!

ฉันใช้เวลานานเกินไปในการพยายามทำให้สิ่งนี้เป็นรูปหกเหลี่ยมขนาด 5 แต่ฉันต้องตั้งค่าขนาดย่อย 6 แทน :(แทน

ขยาย:

      / / . . . .
     . . . . . | |
    . > e ; s ; @ .
   . \ ; t ; y ; b <
  > } F " + ! P 0 ; /
 | / F ! P 0 $ @ ; < .
  . . t ; y e ; b s /
   . . . . . . . . .
    ) . . . . . . .
     . . . . . . .
      . . . . . .

ตอนแรกฉันทำสิ่งนี้ด้วย)แถวที่ต่ำกว่าหนึ่งแต่ปรากฎว่าเป็นที่ที่แบ่งระหว่างขนาด 5 และรูปหกเหลี่ยมขนาด 6 อยู่ ซึ่งหมายความว่าเมื่อมีการลบไบต์ขนาดทั้งหมดจะเลื่อนลงและทำลายเส้นทางเดิน ฉันแน่ใจว่าขนาด 5 เป็นไปได้แน่นอน


ถ้าฉันเข้าใจเรื่องนี้ถูกต้องคุณไม่สามารถวาง)แถวที่ต่ำกว่าลงไปแล้วใส่ no-op ลงไปหลังจากนั้นจึงเป็นขนาด 6 เหลี่ยมหรือไม่
EdgyNerd

@EdgyNerd ถ้าคุณใส่ no-op หลังจากที่มันสามารถถูกลบออกได้โดยไม่ส่งผลกระทบต่อโปรแกรม
King King

2

ถึง 000, 41 ไบต์

<<@"setyb "$"4"+"0"/
..@"setyb 04"(....<1

ลองออนไลน์! เครื่องมือตรวจสอบของ JoKing

ฉันคิดว่าคำตอบนี้คล้ายกับคำตอบของ> <> ของ JoKingแต่ฉันไม่ได้อ่าน> <> ดังนั้นฉันจึงไม่แน่ใจ

มีการลบไบต์ที่แตกต่างกัน 4 ชนิดที่นี่

  1. /ไบต์ถูกลบออกจากบรรทัดแรกก่อน ในกรณีนี้สแลชจะถูกย้ายอย่างมีประสิทธิภาพไปทางซ้ายหนึ่งช่องว่างเบี่ยงเบนไปที่บรรทัดล่างสุดและป้องกันไม่ให้ส่วนที่แก้ไขของโค้ดถูกเรียกใช้งาน นี้ทำให้เราเรียกใช้รหัสซึ่งเอาท์พุท("40 bytes"@40 bytes

  2. ตัวแรก/จะถูกลบออกจากบรรทัดแรก ในกรณีนี้เราเรียกใช้รหัสซึ่งเป็นวิธีที่ซับซ้อนหรือการพิมพ์"0"+"4"$" bytes"@40 bytes

  3. บรรทัดใหม่จะถูกลบออก สิ่งนี้ทำให้เราเริ่มต้นจากจุดสิ้นสุดของบรรทัดที่สองและรหัสผล (ที่มี noops ออก) เป็นที่เพิ่งพิมพ์1("40 bytes"@40 bytes

  4. ไบต์จากบรรทัดสุดท้ายจะถูกลบออก นี่เป็นสาเหตุ1ที่จุดสิ้นสุดของบรรทัดแรกจะถูกย้ายไปทางซ้ายและป้องกันไม่ให้มันถูกเพิ่มไปยังสแต็กเมื่อปลายแหลมถูกเบี่ยงเบน/ไป รหัส"0"+สำหรับเหตุผลที่ผลักดัน0แทน1, ส่วนที่เหลือของรหัสที่จะเปิดเข้าไป040 bytes

ไคลน์ 001, 41 ไบต์

\("40 bytes"@......1
..@"setyb "$"4"+"0"/

ลองออนไลน์! เครื่องมือตรวจสอบของ JoKing

นี่คือคำตอบที่ใช้โทโพโลยีที่แตกต่างกัน มันมีขนาดเท่ากัน แต่ฉันคิดว่ามีห้องพักสำหรับการปรับปรุง


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