เครื่องพิมพ์สตริงลึกลับ (โจร)


26

ด้ายค็อปสามารถพบได้ที่นี่: เครื่องพิมพ์สตริงลึกลับ (ค็อป)

ความท้าทายของคุณ

  • เลือกการส่งจากเธรด cops และพิมพ์สตริงจากคำตอบในเธรดนั้น
  • การส่งที่คุณเลือกต้องไม่ปลอดภัย (ต้องใหม่กว่า 7 วัน)
  • สคริปต์โปรแกรมฟังก์ชันหรือ REPL ของคุณจำเป็นต้องปฏิบัติตามกฎเดียวกันกับเธรด cops เพียงเพื่อสรุป:

    • โปรแกรมของคุณต้องมีความยาว≤128ตัวอักษร (หากการส่งของตำรวจอยู่ในช่วงความยาวของโปรแกรมที่น้อยกว่านั้นโปรแกรมของคุณจะต้องอยู่ในช่วงความยาวนั้นด้วยตัวอย่างเช่นหากโปรแกรมของตำรวจคือ≤32ไบต์โปรแกรมของคุณจะต้อง≤32ไบต์ )
    • โปรแกรมต้องสร้างเอาต์พุตเดียวกันทุกครั้งที่รัน
    • ไม่มีฟังก์ชั่นการเข้ารหัสลับ
    • โปรแกรมจะต้องไม่นำเข้า
    • ไม่มีช่องโหว่มาตรฐาน
  • การส่งใหม่ทั้งหมดต้องใช้ภาษาเดียวกัน ส่งจากก่อนที่กฎนี้จะทำดีแม้ว่าพวกเขาจะไม่

เกณฑ์การให้คะแนน

การให้คะแนนทำงานคล้ายกับโจร แต่แตกต่างกันเล็กน้อย:

  • แคร็กโปรแกรมใด ๆ ของ≤8ไบต์ให้ 1 จุด
  • แคร็กโปรแกรม≤16ไบต์ให้ 2 คะแนน ≤32ไบต์ให้ 4 คะแนนและอื่น ๆ
  • ทุกการส่งเพิ่มเติมไม่ว่าจะมีความยาวเท่าใดรับ 5 คะแนน
  • การส่งของตำรวจแต่ละคนสามารถแตกได้เพียงครั้งเดียวเท่านั้นบุคคลแรกที่ทำการถอดรหัสแต่ละครั้งจะได้รับคะแนน

การส่ง

แต่ละคำตอบจะต้องมี

  • ลิงค์ไปยังการส่งของตำรวจ
  • โปรแกรมและภาษาโปรแกรมของคุณ
  • นอกจากนี้ยังมีความยาวโปรแกรมของตำรวจ (ตามกำลัง 2) เป็นหมายเลขสุดท้ายในส่วนหัวของคุณ

นอกจากนี้โปรดแสดงความคิดเห็นในการส่งของตำรวจพร้อมลิงค์ไปยังคำตอบของคุณ

นี่คือตัวอย่างข้อมูลสแต็กเพื่อสร้างกระดานผู้นำ กรุณาแสดงความคิดเห็นหากมีปัญหากับตัวอย่าง หากคุณต้องการที่จะเห็นการส่งตำรวจเปิดทั้งหมดดูตัวอย่างในความท้าทายของตำรวจ

การประกวดนี้ปิดตอนนี้

ผู้ชนะโดยรวม: kennytm

ส่งมากที่สุด: Sp3000

(โปรดทราบว่าจำนวนของการส่งไม่ได้แปลตรงตามจุดเนื่องจากความยาวของโปรแกรมที่ถอดรหัสจะถูกนับเมื่อคำนวณคะแนน)


หมายเหตุ: การส่งเพิ่มเติมทุกครั้งจะได้รับ 5 คะแนน
Daniel M.

คำตอบ:


29

Pyth, Dennis, ≤ 8

V./Tp*FN

ไอ้บ้าสนุก - ส่วนที่ยากที่สุดคือหาวิธีทำมันให้สั้นพอใน Pyth

การวิเคราะห์

1234ที่คำแนะนำเริ่มต้นที่เราอาจจะจัดการกับรายการตัวเลขพิมพ์โดยไม่ต้องคั่น ลองและแบ่งตัวเลขในวิธีที่สมเหตุสมผล:

1 2 3 4 4 6 5 8 8 9 6 12 10 12 7 16 16 18 12 15 16 8 24 20 24 14 27 18 20 9 32 32 36 24 30 32 16 36 21 24 25 10

มีคำแนะนำเล็กน้อยที่เรากำลังทำอยู่:

  • ตัวเลขทั้งหมดมีปัจจัยหลักน้อยกว่า 10
  • ตัวเลขจำนวนมากค่อนข้างใกล้เคียงกับดัชนีในรายการ

อย่างไรก็ตามมีลักษณะบางอย่าง หมายเลขที่ดัชนี 23 คือ 24 และเป็นกรณีเดียวที่ตัวเลขที่ดัชนีนั้นมากกว่าดัชนีตัวเอง อย่างไรก็ตามเงื่อนงำที่ใหญ่กว่าคือตัวเลขบางตัวมีขนาดเล็กกว่าเพื่อนบ้านอย่างชัดเจนโดยเฉพาะอย่างยิ่งเลข 7 ที่ดัชนี 15, 8 ที่ดัชนี 22 และ 9 ที่ดัชนี 30

สังเกตว่ารูปแบบนี้มีรูปแบบ 7-8-9 เรายังสามารถเห็นได้ว่าตัวเลขสุดท้ายคือ 10 ที่ดัชนี 42 จากคำถามล่าสุดของ @Dennis เกี่ยวกับกลุ่ม Abelianการตรวจสอบอย่างรวดเร็วของ OEIS เปิดเผยว่า15, 22, 30, 42เป็นส่วนประกอบของพาร์ติชัน หมายเลข Pyth มี builtin สำหรับพาร์ติชันซึ่งทำให้เรามีอักขระสองในแปดตัว:./

แต่ทราบว่าหมายเลขสุดท้ายคือ 10 ซึ่งเป็นที่น่าสงสัยเพราะ 10 เป็นตัวแปร preinitialised ใน Pyth Tเป็น ./Tให้รายชื่อพาร์ติชั่นทั้ง 42 ตัวของหมายเลข 10 ซึ่งดูเหมือนว่าจะเป็นประโยชน์

pตอนนี้พิมพ์จะทำโดยไม่ต้องแยกเพื่อให้คำแนะนำนี้ในการใช้งานของ บางทีเราอาจวนรอบแต่ละพาร์ติชันทำอะไรกับมันแล้วพิมพ์ด้วยp? สิ่งนี้ทำให้เรามีแม่แบบต่อไปนี้:

V./Tp??N

ที่Vเป็นห่วงซึ่ง loops กว่า iterable Nจัดเก็บแต่ละองค์ประกอบในตัวแปร

การดูอย่างรวดเร็วของพาร์ติชันที่สองล่าสุด(5, 5)ควรทำให้ชัดเจนว่าเราต้องการนำผลิตภัณฑ์ วิธีที่ไร้เดียงสาเพื่อลดรายการโดยการคูณคือ

u*GHd1

ที่dเป็นรายการในคำถาม อย่างไรก็ตามนี่มันยาวเกินไป

น่าเสียดายที่นี่คือที่ฉันต้องดึงนักล่าสัตว์เดรัจฉานออกมา ฉันไม่ได้ติดตาม Pyth มาระยะหนึ่งแล้วดังนั้นฉันจึงไม่รู้จักคุณสมบัติใหม่ ๆ มากมาย เหลืออักขระเพียงสองตัวเท่านั้นซึ่งดูเป็นไปได้ทั้งหมด

ผู้สืบหาสัตว์เดรัจฉานก็กลับมา:

V./Tp*FN

อยู่ที่ไหน*Fหมอบ*(คูณ) ไม่น่าแปลกใจที่ฉันไม่พบมันในการค้นหาของฉัน - ฉันค้นหาคำหลัก "ลด" มากกว่า "หมอบ"!


3
เป็นไปได้ใน 7:jk*M./T
Jakube

@ Jakube โอ้ว้าวววววววถ้าช่วงนั้นเป็นไปได้<= 7ฉันคงต้องทำแล้ว แน่ใจได้ไหมว่าฉันได้ลองใช้ภาษามาระยะหนึ่งแล้ว
Sp3000


9

> <>, VTCAKAVSMoACE, ≤ 64

'9?':?!;1-$:'@'+o'3'*'='%$30.

กระแทกแดกดันไม่เพียงเท่านี้ลดขีด จำกัด ช่วงก็ยังพกพาและทำงานร่วมกับล่ามออนไลน์

การวิเคราะห์

เริ่มจากสตริงเป้าหมาย:

yh[cPWNkz^EKLBiQMuSvI`n\Yw|JVXDUbZmfoRC_xrq{TlpHjGt]OadFAsgeyh[

> <> ผลักตัวอักษรไปที่สแต็กด้วย'หรือ"ในโหมดสตริง แต่ด้วย 63 ตัวอักษรที่จะพิมพ์และ 64 ไบต์เท่านั้นที่จะทำงานกับการปรากฏตัวของตัวพิมพ์ใหญ่ (คำแนะนำที่ไม่ถูกต้องใน> <> สำหรับกลอุบายวงมาตรฐาน) เป็นไปไม่ได้ ดังนั้นเราต้องทำอะไรบางอย่างกับจุดรหัส

การแปลงเป็นโค้ดให้ (ฉันใช้ Python ที่นี่):

>>> L = [ord(c) for c in "yh[cPWNkz^EKLBiQMuSvI`n\Yw|JVXDUbZmfoRC_xrq{TlpHjGt]OadFAsgeyh["]
>>> L
[121, 104, 91, 99, 80, 87, 78, 107, 122, 94, 69, 75, 76, 66, 105, 81, 77, 117, 83, 118, 73, 96, 110, 92, 89, 119, 124, 74, 86, 88, 68, 85, 98, 90, 109, 102, 111, 82, 67, 95, 120, 114, 113, 123, 84, 108, 112, 72, 106, 71, 116, 93, 79, 97, 100, 70, 65, 115, 103, 101, 121, 104, 91]

โปรดทราบว่าตัวเลขสามตัวสุดท้ายนั้นเหมือนกันกับสามตัวแรก คำแนะนำนี้จะเป็นไปได้ที่ modulo loop จะเกิดขึ้น

ลองดูที่องค์ประกอบต่าง ๆ ที่เรามี:

>>> len(set(L))
60

เรามีองค์ประกอบ 63 รายการLโดยสามรายการแรกตรงกับสามรายการสุดท้าย ซึ่งหมายความว่านอกเหนือจากการชนกันขององค์ประกอบอื่น ๆ ทั้งหมดที่ไม่ซ้ำกัน ทีนี้คำแนะนำนี้เกี่ยวกับบางสิ่งบางอย่างเช่นการใช้กำลังโมดูโลเป็นจำนวนเฉพาะ แท้จริงแล้วนั้น60 + 1 = 61เป็นสิ่งสำคัญซึ่งเป็นสัญญาณที่ดี

ลองหาองค์ประกอบที่เล็กที่สุด

>>> min(L)
65

และใช้มันเพื่อลดองค์ประกอบทั้งหมดลงเพื่อให้องค์ประกอบขั้นต่ำเป็น 1:

>>> M = [x-64 for x in L]
>>> M
[57, 40, 27, 35, 16, 23, 14, 43, 58, 30, 5, 11, 12, 2, 41, 17, 13, 53, 19, 54, 9, 32, 46, 28, 25, 55, 60, 10, 22, 24, 4, 21, 34, 26, 45, 38, 47, 18, 3, 31, 56, 50, 49, 59, 20, 44, 48, 8, 42, 7, 52, 29, 15, 33, 36, 6, 1, 51, 39, 37, 57, 40, 27]

สังเกตว่าองค์ประกอบหลังจากนั้น1เป็น51อย่างไร หากมีการจัดเรียงกำลัง / การคูณบางอย่างเกิดขึ้นนี่เป็นการเดาที่ดีสำหรับตัวคูณของเรา

ให้มันยิง:

>>> (57*51)%61
40
>>> (40*51)%61
27
>>> all((x*51)%61 == y for x,y in zip(M, M[1:]))
True

บิงโก! ตอนนี้เราสามารถย้อนกลับได้โดยให้รหัสต่อไปนี้:

x = 57
for _ in range(63):
    print(chr(x + 64), end="")
    x = (x*51)%61

ซึ่งถูกแปลเป็นแล้ว> <>


1
ที่น่าสนใจนี่คือสิ่งที่แตกต่างกันหลายอย่างกับสิ่งที่ฉันทำ - ฉันใช้ 37 และ 112 (หมายถึงใช้ 101 แต่ทำผิดในรหัส Epic ล้มเหลว) เป็นชุดการคูณต่อเนื่องและ modulo'd กับ 63 จากนั้นเพิ่ม 64 เป็น รับช่วง ASCII ที่อ่านได้ +1 ทำได้ดีมาก
Addison Crump

ดีมากฉันหวังว่าฉันจะทำอย่างนั้น;)
J Atkin

7

Pyth, Maltysen, ≤4

C.ZG

กำลังดุร้ายใช้เวลานานมากที่ฉันทำได้เร็วขึ้นด้วยตนเอง

การวิเคราะห์

C(แปลงสตริงเป็นฐาน 256 int) เป็นวิธีที่ง่ายที่สุดในการสร้างจำนวนมากใน Pyth ดังนั้นมันอาจเป็นตัวอักษรตัวแรก ถ้าเราแปลงจากฐาน 256 เราจะได้:

xÚKLJNIMKÏÈÌÊÎÉÍË/(,*.)-+¯¨¬ 

อืม ... ไม่ค่อยกระจ่างเท่าไหร่

ตอนนี้Gคือสตริงตัวอักษรซึ่งมีลักษณะเหมือนมันอาจจะเป็นแหล่งที่มาของสายยาวไปยังฟีดเป็น"abc...z" Cดูเอกสารที่ฉันพบ:

.Z    Compresses or decompresses a string.

หากเรากำลังเผชิญกับการบีบอัดที่นี่มันไม่น่าแปลกใจเลยที่จะได้รับอักขระ ASCII ที่เพิ่มขึ้นทุกประเภท ลองC.ZGแล้วให้คำตอบ


6

ฟูริเยร์การสลายตัวของเบต้า≤ 32

2~x1~y20(xoy~z*x~yz~xq^~q)

หรืออีกวิธีหนึ่งใน CJam:

X0I{_2$+}*]2\f#

การวิเคราะห์

ตอนเริ่มต้นเราจะเห็นพลังมากมาย 2:

2
1
2
2
4
8
32
256
8192
2097152
...

ถ้าเราใช้ log log 2 ของตัวเลขเหล่านี้เราจะได้:

1 0 1 1 2 3 5 8 13 21 ...

ซึ่งเป็นชุด Fibonacci 1, 0เริ่มต้นที่


6

หอย, feersum, ≤2ไบต์

z

นี่คือ 2 ไบต์จริง ๆ ; ตัวอักษรตามด้วยขึ้นบรรทัดใหม่z\n

ฉันไม่รู้ว่ามันทำงานอย่างไรหรือกำลังทำอะไรอยู่ แต่หลังจากทดสอบอินพุตที่เป็นไปได้ทั้งหมดนอกเหนือจาก~+และ~,นี่เป็นโปรแกรม 2 ไบต์เท่านั้นที่สร้าง8เป็นเอาต์พุต

และใช้เวลานานกว่าจะได้ผลลัพธ์นี้ ไม่น่าแปลกใจที่เรียกว่า "หอยทาก" :-D


หมายเหตุสำหรับตนเอง: ครั้งต่อไปที่คุณทำการทดสอบซอฟต์แวร์ที่ไม่รู้จักให้ทำใน VM


5

สนิมเลียมเลียมโนรอนฮา ha128 ไบต์

fn main(){print!("AACAAEGAAACIIMOAAACAAEGQQQSYYDFAAACAAEGAAACIIMOHHHJHHLNXXXAGGKMAAACAAEGAAACIIMOAAACAAEGQQQSYYDFOOO");}

เพียงพิมพ์คำต่อคำสตริงคือ 120 ไบต์ ...


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



5

CoffeeScript, user2428118, ≤64

alert 0+(btoa k.substr -2 for k of document.body.style).join ''

(ใช้งานได้เฉพาะบน Chrome 46.0.2490.71 ตามที่อธิบายโดย Cop)


เห็นได้ชัดว่าผลลัพธ์คือการต่อกันของสตริงที่เข้ารหัสแบบสั้นเบส 64 อันเนื่องจาก "=" ทั้งหมด หลังจากถอดรหัสพวกเขาเราจะพบรายการของสายอักขระ 2 ตัวเช่น

['nt', 'ms', 'lf', 'ne', 'll', 'on', 'ay', 'on', …

ซึ่งดูเหมือนจะไม่สมเหตุสมผล แต่ผมหารายการแปลก ๆ บางอย่างในนั้นเหมือนและnX tYหลังจากกรองสิ่งเหล่านี้เราก็จะได้

>>> # Python
>>>
>>> [i for i in tt if not re.match('[a-z]{2}$', i)]
['nX', 'nY', 'tX', 'tY', 'wX', 'wY', 'r', 'nX', 'nY', 'tX', 'tY', 'nX', 'nY', 'nX', 'nY', 'nZ', 'x', 'y']

เหล่านี้ X และ Y offsetX/Yดูเหมือนจะแสดงต้นฉบับรหัสที่ใช้คุณสมบัติตำแหน่งเช่น สิ่งที่น่าสนใจเป็นพิเศษคือnZรายการ ในการตรวจสอบสมมติฐานของฉันฉันค้นหาคุณสมบัติทั้งหมดที่ลงท้ายด้วย "Z":

// CoffeeScript
checked = []
f = (o) ->
    if !(o in checked) 
        for k of o
            if /Z$/.test(k)
                console.log(o, k)
            if o[k] instanceof Object
                f o[k]
f window

CSSStyleDeclaration, "webkitTransformOriginZ"ซึ่งแสดงให้เห็นตัน จากนี้เรามีข้อบ่งชี้ที่ชัดเจนว่ารายการถูกสร้างขึ้นโดยตัวละคร 2 ตัวสุดท้ายของปุ่มทั้งหมดของstyleวัตถุซึ่งการทดสอบข้างต้นแสดงให้เห็นว่าถูกต้องแน่นอน


คุณพบมันขอแสดงความยินดี! ซอร์สโค้ดต้นฉบับ
user2428118

5

Lua <= 4, Egor Skriptunoff

ผู้ใช้จำนวนมากเริ่มกังวลกับคำตอบนี้ในการแชทดังนั้นฉันต้องปลดเปลื้องพวกเขาจากความทุกข์ยากของพวกเขา ฉันไม่รู้จัก Lua และไม่สามารถทดสอบได้ แต่ฉันจะแปลกใจมากถ้าสิ่งนี้ใช้ไม่ได้

4^~9

นี่จะค่อนข้างชัดเจน แต่อาจไม่มีใครได้รับเนื่องจากตัวดำเนินการระดับบิตถูกเพิ่มในรุ่น 5.3 เท่านั้น ideone.com มีเฉพาะรุ่น 5.2


facepalmฉันมองข้ามโอเปอเรเตอร์ bitwise เพราะพวกมันใช้จำนวนเต็มเท่านั้น
LegionMammal978

5

Python 2, histocrat, ≤16

[[[51002**3/6]]] 

คำใบ้ที่ใหญ่ที่สุดคือคำสัญญาที่ว่าจะไม่ทำงานใน Python 3 มีอะไรเปลี่ยนแปลงใน Python 3บ้าง? ผู้ต้องสงสัยที่ใหญ่ที่สุดคือผู้ดำเนินการแผนกส่งคืน a floatใน Python 3

ดังนั้นผมถือว่าการแก้ปัญหาคือของแบบฟอร์ม⌊α บีตา / n⌋ = c = 22111101102001 เช่นการยกกำลังเป็นวิธีเดียวที่สั้นในการสร้างจำนวนมาก

หาก {α, β, n} สร้างโซลูชันขึ้นมาแน่นอน (cn) 1 / β≈αควรใกล้เคียงกับจำนวนเต็มมาก ดังนั้นฉันใช้ต่อไปนี้เพื่อพยายามบังคับเดรัจฉาน {α, β} สำหรับแต่ละ n:

(* Mathematica *)
n=2; Sort[Table[{N[Abs[k - Round@k] /. k -> (22111101102001*n)^(1/b), 12], b}, {b, 2, 50}]]

(* Output: {{0.00262542213622, 7}, ...}

   The first number is the "quality" of the solution, lower is better.
   the second number is β.
   Thus α ≈ (nc)^(1/β) = 89
   But (89^7)/2 = 22115667447764, which is still far away from the answer.

*)

ผลลัพธ์จริงจะออกมาอย่างรวดเร็วเมื่อ n = 6


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

4

MATLAB, StewieGriffin, ≤ 16

[36;87]*' |'*5

พิมพ์:

ans =
        5760       22320
       13920       53940

ดี! ดีใจที่คุณชอบมัน :-) 5*'$W'.'*' |'วิธีที่ผมทำมัน
Stewie Griffin

ฉันคิดว่าจะทำให้มันยากขึ้นโดยการคูณด้วยเช่น.73แทนที่จะเป็น 5 ทำ+5หรือทำ3x3เมทริกซ์ แต่คิดว่ามันสนุกกว่านี้ สามารถทำได้มากด้วยสามไบต์ที่เหลือ
Stewie Griffin

@StewieGriffin ไม่เคยเจอมา.'ก่อน แต่ใช้งานได้ดี - สงสัยว่าจะแปลงสตริงอย่างไรโดยไม่ต้องใช้วงเล็บ
Tom Carpenter

4

Matlab, Luis Mendo, ≤16

ฉันเจอแล้วใช่แล้ว!

fix(peaks(9).^2)

ฉันไม่รู้ว่า Octave สามารถทำสิ่งนี้ได้เช่นกัน


อย่างไร? คุณเคยได้ยินpeaks()ไหม
lirtosiast

ใช่ฉันมี. peaksฉันมีอันตรายจากการเล่นรอบกับ
Wauzl


4

Python, spacemanjosh, ≤ 64

n=0;d=1;L=[]
exec("L+=[10/(100-n)**.5];n+=d;d+=2;"*10)
print(L)

เครื่องคิดเลขสัญลักษณ์อันรุ่งโรจน์ ไม่ค่อยตีกอล์ฟ แต่มันพอดี

แก้ไข:ฉันเล่นกอล์ฟ

print([10/(100-n*n)**.5for n in range(10)])

4

JavaScript ES6, CᴏɴᴏʀO'Bʀɪᴇɴ, ≤128ไบต์

var x=122,s='0037122342526683102122';for(var i=23;i<=505;i+=2)s+=(x+=i);s;

ฉันสงสัยว่ามันถูกต้องเพราะฉันไม่ต้องการที่ใดก็ได้ใกล้กับ 128 ไบต์ แต่การค้นหาลำดับที่ซ้ำกันนั้นเป็นความท้าทายที่สนุก


ว้าว. ฉันใช้วิธีที่แตกต่างอย่างสิ้นเชิง ที่ยังคงนับ? : 3
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴโดยปกติแล้ว ฉันอยากรู้อยากเห็นเกี่ยวกับต้นฉบับและสิ่งที่สร้าง 22 ไบต์แรกเหล่านั้น แต่ฉันคาดเดาบางสิ่งบางอย่างที่ขี้ขลาดในวง init
SLuck49

ฉันจะโพสต์มันเมื่อฉันมีเวลา ฉันคิดว่ามันเป็นพื้นของฟังก์ชัน s * s - s / (5-s)
Conor O'Brien

4

Thue, ppperry, <= 64

0::=11
1::=22
2::=33
3::=44
4::=55
a::=bbb
b::=000
::=
aaaaaaa

สลายตัว 2016 เป็นปัจจัยสำคัญโดยพื้นฐานแล้ว ตัวละคร 62 ตัวฉันเดาว่านี่คล้ายกับที่คุณคิด


คุณสามารถทำ 0 :: = 2222 เพื่อบันทึกไบต์
lirtosiast

จุดยุติธรรมดูเหมือนว่าสง่างามน้อยลง
ฮิสโทแค


4

> <>, Sp3000, <= 8

'l(?; o>

ตัวชี้คำแนะนำล้อมรอบและขั้นตอนต่อไปนี้เกิดขึ้น:

  • 'l(?; o>' ผลักดันค่า ASCII ของ l(?; o>ไปยังสแต็ก
  • l เพิ่มขนาดของสแต็กบนสแต็ก
  • (เปรียบเทียบองค์ประกอบสแต็คสองอันดับแรก: size of stackและord('>')
  • ?; หยุดโปรแกรมหากขนาดสแต็กใหญ่กว่า
  • o เอาท์พุทองค์ประกอบด้านบนของสแต็กเป็นตัวละคร (นี้จะเสมอ o )
  • > ตั้งค่าทิศทาง IP นี่คือไม่มีตัวเลือก
  • เรากลับไปที่ขั้นตอนแรก

ooooooooooooเอาท์พุท

เราสามารถรับเอาท์พุทที่แตกต่างกันมากมายโดยการเปลี่ยน[space]เป็นสิ่งที่พุชหรือปรากฏบนสแต็กและใช้อักขระที่ถูกต้องอื่นแทน>ซึ่งอาจผลักหรือป็อปอัพ


ดี! สำหรับการอ้างอิงฉันมี:'l=?;o*
Sp3000


4

CJam, Reto Koradi, ≤ 4

HJK#

Pushes 17แล้ว19 20 = 37589973457545958193355601

ลองออนไลน์

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


ถูกต้อง. ฉันจะจัดการกับการอัปเดตโพสต์อย่างเป็นทางการในวันนี้
Reto Koradi

4

Pyth <= 4, Dennis

ljyG

นั่นคือความยาวของการเข้าร่วมในการขึ้นบรรทัดใหม่ของชุดย่อยทั้งหมดของตัวอักษร

ทดสอบการทำงาน:

$ pyth -cd 'ljyG'
==================== 4 chars =====================
ljyG
==================================================
imp_print(Plen(join(subsets(G))))
==================================================
939524095

ฉันพบว่าตัวเลขนั้น2^27 * 7 - 1เป็นคำใบ้ที่แข็งแกร่งว่าเป็นไปตามyGนั้น2^26องค์ประกอบที่มีความยาว จากนั้นฉันเดาว่ามันจะต้องถูกแปลงเป็นสตริงและพิมพ์ความยาวของมัน อย่างไรก็ตามวิธีเดียวที่จะทำสิ่งนี้ที่ฉันคิดได้ซักพักคือ `` จากนั้นฉันก็นึกถึงjซึ่งลงตัวพอดี


4

C, tucuxi, ≤64

main(i){for(i=0;i<11000;++i)if(!(i&2*i))printf("1%d",!(i&1));}

ผลลัพธ์เป็น 0 และ 1 ทั้งหมด แต่ C ไม่สามารถพิมพ์ไบนารีได้โดยตรงดังนั้นจึงมีความเป็นไปได้มากที่ผลลัพธ์เหล่านี้จะเป็นบูลีน

มีมากกว่า 1 0 ดังนั้นฉันบันทึกตำแหน่ง 0s ( 3, 9, 13, 19, …) ซึ่งกลายเป็น OEIS A075318 A075318สิ่งนี้ไม่มีประโยชน์แม้ว่าจะไม่มีสูตรง่ายๆในการพิจารณาว่าตัวเลขอยู่ในลำดับนี้

แต่เราทราบว่ามีตัวเลขคี่ทั้งหมดดังนั้นอาจ(x-1)/2 = {1, 4, 6, 9, 12, …}มีข้อมูลที่เป็นประโยชน์มากกว่า และนี่คือA003622 A003622

A003622 สามารถกำหนดได้ว่า "ตำแหน่ง 1 ในA003849 " ซึ่งเป็นสิ่งที่เราต้องการแตกที่นี่ และ A003849 ถูกกำหนดเป็น " A003714 mod 2" โดยที่ A003714 เป็นเพียงจำนวนเต็มทั้งหมดx & (2*x) == 0จำนวนเต็มทั้งหมดที่ ดังนั้นเราจึงได้ทางออก

OEIS rox


น่าประทับใจอย่างแท้จริง - ฉันไม่เคยประหลาดใจกับผู้ใช้เว็บไซต์นี้
tucuxi

4

Dyalog APL, Dennis, ≤4

*⍨⍟8

คำนวณ ln (8) ^ ln (8) StackExchange หยุดแปลงคำตอบของฉันหรือไม่ ฉันจะพิมพ์สิ่งต่าง ๆ ที่นี่เพื่อไม่ให้กลายเป็นความคิดเห็น


ผมมีแต่ไม่ทราบเกี่ยวกับ8*⍟⍟8 เยี่ยมมาก :)
Sp3000


3

Pyth, xnor, ≤ 4

C`CG

CG(แปลงสตริงตัวอักษร"abc...z"จากฐาน 256) เป็นวิธี Pyth ทั่วไปของการสร้างจำนวนมากจริงๆ หลังจากนั้นมันแค่แปลงและแปลงจากฐานอีกครั้ง


3

Python 3, Mego, ≤128

(การใช้ Python 3.5.0 ไม่ได้ทดสอบกับเวอร์ชั่นก่อนหน้านี้ 105 98 ไบต์)

import sys
a=sys.stdout
sys.stdout=None
from this import*
a.write(s.translate(s.maketrans(d))[4:])

ดีมาก! ฉันทำได้ใน 94 ดูรหัสตำรวจของฉันโพสต์
Mego


3

Matlab / Octave, Wauzl, ≤16

"234"'*"567"

ใช้แนวคิดเดียวกันกับคำตอบของ Tom Carpenter

(หากไม่ได้ผลให้ลองทำ :)

[50;51;52]*'567'

@NaN ดูการอัปเดต ทั้งสองมีขนาด -16 ไบต์และทำงานบน ideone
kennytm

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