คุณสามารถอ่านบาร์โค้ดในบาร์โค้ดได้หรือไม่?


12

ยินดีต้อนรับสู่บาร์ piNapple เมลเบิร์น นักกอล์ฟที่ดีที่สุดทุกคนอยู่ที่นี่พร้อมกับแล็ปท็อปค็อกเทลและสุ่มตัวอย่างที่แย่กว่าเดิม

ฉันรู้สึกจำเป็นอย่างยิ่งที่ต้องเน้นย้ำจุดสุดท้าย แย่มากขึ้นเรื่อย ๆ แอลกอฮอล์สามารถทำสิ่งที่ตลกกับตรรกะการเขียนโปรแกรม

ดังนั้น - นักกอล์ฟสองสามคนกำลังพยายามควงคู่กันในภาษาแปลก ๆ มากขึ้นเรื่อย ๆ มีบางคนได้รับคำสั่งซื้อครั้งที่สี่ใน INTERCAL จากนั้นแอลกอฮอล์ก็หยุดไหล เขามึนเมาลบอัลกอริธึมการอ่านบาร์โค้ดจากคอมพิวเตอร์เครื่องอื่นโดยสิ้นเชิงโดยบังเอิญ ... นั่นไม่ได้เชื่อมต่อกับเครือข่ายใด ๆ ! (เด็ก ๆ - อย่า INTERCAL เพื่อประโยชน์ของคุณเพื่อครอบครัวของคุณ)

ปกตินี้จะไม่เป็นปัญหาใหญ่ แต่นักกอล์ฟบางคนได้ออกแบบระบบเมื่อหลายปีก่อนและไม่มีบาร์โค้ดใดเป็นมาตรฐาน สมมติว่า 1 คือบรรทัดและ 0 คือพื้นที่ว่างพวกเขาทั้งหมดเริ่มต้นที่ 101 และจบด้วย 1001 ทุกอย่างที่อยู่ตรงกลางคือการเข้ารหัส ASCII 7 บิต

บาร์เทนเดอร์มีเครื่องอ่านบาร์โค้ดขนาดใหญ่ที่จะส่งคืนความยาวตามอำเภอใจ (แม้ว่าจะน้อยกว่า 300 บิต) ของ 1 และ 0 ผ่าน STDIN อาร์กิวเมนต์หรือไฟล์ขึ้นอยู่กับโปรแกรมของคุณ และอาจก้าวไปข้างหน้าหรือข้างหลังขึ้นอยู่กับว่าขวดนั้นถูกเก็บไว้ที่ใด โปรแกรมของคุณจะต้องส่งคืนสตริงจากตรงกลางของบาร์โค้ดผ่าน STOUT หรือไฟล์

แต่น่าเสียดายที่เขาไม่ได้ใช้จ่ายมากในการจัดเก็บของเขาดังนั้นโปรแกรมที่มีแหล่งที่สั้นที่สุดจะถูกเลือกและรับรางวัลเครื่องดื่มฟรีและแบบฝึกหัดการเขียนโปรแกรมเมาจากนักกอล์ฟคนอื่น ๆ

โชคดี!


7
ในคำอื่น ๆ ตรวจสอบว่าการป้อนข้อมูลเป็นและ101...1001หรือ1001...101ย้อนกลับในกรณีหลังแล้วแพ็คตรงกลางเป็นไบต์
John Dvorak

1
แม่นยำอย่างสมบูรณ์ แต่ความสนุกในนั้นคืออะไร? : p
lochok

คำตอบ:




0

Pyth , 21

smCid2c:?zv@z2_z3_4 7

คำอธิบาย:

        ?zv@z2_z           Input if 3rd character of input is 1, else reversed input.
       :        3_4        Slice out the middle portion, ASCII of the above string.
      c             7      Chop into 7 character chunks.
 mCid2                     Convert each chunk from binary to integer, then to a character.
s                          Sum up the characters into a string and print.

โปรดทราบว่าในขณะที่คำถามนั้นเก่ากว่าภาษาการมีอยู่ของคำถามไม่ได้มีอิทธิพลต่อการออกแบบของภาษา แต่อย่างใดเพราะฉันไม่ได้เห็นคำถามมาก่อนในวันนี้

กฎยังคงเป็นกฎดังนั้นฉันทำให้มันเป็น CW


ตกลงฉันจะทำให้มันเป็น CW แล้ว
isaacg

0

AWK, 116 ไบต์

/101$/{r=1}{L=split($0,a,"")
n=r?L-2:3
N=r?-1:1
while(d<L-7){c=0
for(k=0;k<7;k++){c*=2;c+=a[n+=N];d++}printf"%c",c}}

ฉันรู้ว่าคำถามนี้ยังไม่ได้เห็นความรักมากมาย แต่ฉันอยากรู้เกี่ยวกับการมองเห็นและAWKการแก้ปัญหา นี่ไม่ใช่ทั้งหมดที่ฉลาด แต่ดูเหมือนว่าจะทำงานได้และฉันไม่เห็นพื้นที่ที่ชัดเจนในการเล่นกอล์ฟ ฉันย้อนกลับสตริงเมื่อจำเป็น แต่ที่เพิ่มไบต์มากกว่า tweaking ตรรกะเพิ่มขึ้นเพื่อเลื่อนไปข้างหลัง

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