ค้นหาเข็มในกองหญ้า (โจร)


18

นี่เป็นส่วนหนึ่งของการท้าทายของไปที่นี่เพื่อส่วนตำรวจ

ความท้าทายของโจร

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

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

โจรที่ร้าวคำตอบตำรวจที่สุดจะชนะ ความสัมพันธ์จะถูกทำลายโดยผลรวมของขนาดของคำตอบตำรวจแตก (ในความโปรดปรานของโจรที่แตกส่งอีกต่อไป)

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

ตัวอย่าง

นี่คือตัวอย่างง่ายๆในภาษาต่างๆ:

Ruby

Haystack: puts 1>0?"Haystack":"Needle"
Delete:        XXXXXXXXXXXXXXX
Needle:   puts "Needle"

Python 2

Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete:          XXXXXXXX        XX
Needle:   print "eldeeN"[::-1]

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


ถ้าโจรใช้hashing, encryption or random number generationมันอนุญาตหรือไม่ (ถึงจะเป็นไปได้
นิดหน่อย

คำตอบ:


11

JavaScript, 85 ไบต์ (ES6)

รอยแตกคำตอบ Arnauld ของ

f=(k=b=x=35)=>x--?f(k*4853461&268435455):k&2?'N'+(k^12408877).toString(b):'Haystack'

การสาธิต "เข็ม"

คำอธิบาย

ฟังก์ชั่นเดิมคือ:

f=(k=b=x=35)=>x--?f(k*74837258394056219&268435455):k&2?'N'+(k^124038877).toString(b):'Haystack'

ซึ่งอ่านได้มากขึ้นในฐานะ:

f = (k=b=x=35) => {
    if (x--) {
        return f(k*74837258394056219&268435455);
    } else {
        if (k&2) {
            return 'N'+(k^124038877).toString(b);
        } else {
            return 'Haystack';
        }
    }
}

ทราบว่าเมื่อn=21625674แล้วคือn.toString(35)'eedle'

35 ในอินพุตอาจไม่สามารถเปลี่ยนเป็นชุดย่อยได้ (เพราะเราต้องการให้ฐานใหญ่พอที่จะมีตัวอักษร 'del' ทั้งหมดดังนั้นเราจึงต้องการฐานที่มีอย่างน้อย 22 ตัว) ดังนั้นตัวเลขที่จะเปลี่ยนเป็น74837258394056219, และ268435455 124038877เราต้องการที่จะแทนที่ด้วยหมายเลข A, B, C, แต่ละเกิดขึ้นกับส่วนหนึ่งของหลักของตัวเลขเดิมเช่นที่ฟังก์ชั่นg(k) = (k * a & b)เริ่มต้นด้วยk=35และซ้ำ 35 ครั้งแล้ว XORed 21625674กับคให้

สำหรับหนึ่งนี้หลังจากที่คิดบิตเป็นความยาวที่มีขนาดเล็ก (สูงสุดaมีความยาว 17 bและcมีความยาว 9) ผมก็ใช้แรงเดรัจฉาน :-) เขียนc ++ โปรแกรมเพื่อสร้างตัวเลขที่เป็นไปได้ทั้งหมดa, b, cเกิดขึ้นเป็นส่วนย่อย ของตัวเลขดั้งเดิมซ้ำผ่านทั้งหมดaและbและตรวจสอบว่าจำเป็นต้องcอยู่ในชุด ทำงานในประมาณ 15 วินาทีและการส่งออกเพียงอย่างเดียวคือa=4853461, b=268435455, c=12408877(ผลัดกันออกหมายเลขที่bไม่ต้องมีการเปลี่ยนแปลง) ฉันไม่แน่ใจว่ามีวิธีที่ฉลาดกว่าในการสลับฟังก์ชันนี้หรือไม่


5

กองหญ้า , 82 ไบต์

รอยแตกคำตอบ HyperNeutrino ของ

0\1-c\
/    
?10F17+c8F+4+cd8F+3+c6-c1+c,c2+c8+c|
 0   \1++c,c|
F/c++2F8
c\8F+2+cd

ลองออนไลน์!


1
ดี! วิธีที่ฉันติดตั้งโซลูชันดั้งเดิมของฉันคือการเอาตัวอักษรออก0ตอนแรก: P ยินดีที่ได้เห็นวิธีอื่น! +1
HyperNeutrino

5

Brain-Flakขนาด 96 ไบต์

รอยแตกคำตอบ Funky ผู้ชายของคอมพิวเตอร์

([((((()()())){}){}){}](()[()]({}([(((()()()){}))[]])[]({}({}()(((()(({}){}){}){}){}())))[]))())

ลองออนไลน์!

นี่เป็นความท้าทายที่สนุก

-24 ที่จุดเริ่มต้นที่แปลงyไปaในที่เดิมอยู่ในขณะนี้ใช้ในการแปลงeไปMซึ่งจะถูกแปลงไปแล้วในสถานที่โดยการเปลี่ยนวงปลายทั้งN ())จดหมายฉบับแรกที่kถูกเปลี่ยนเป็นeเพียงแค่ลบป๊อปอัพที่เพิ่ม 6 เข้าไป ส่วนที่เหลือส่วนใหญ่ก็ตกอยู่ในสถานที่ที่มีความผิดพลาดตลกไปพร้อมกัน (รวมถึงหนึ่งโปรแกรมที่มีการส่งออกMeddle)

เปรียบเทียบโปรแกรมทั้งสอง:

Haystack: ([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})
Needle:   ([((((()()())){}){}){}](() [()]   ({}([ (((()()()){})) []])[]({}({}     ()(  ((()(({}){}){}){}){}())))[]              ))   ()  )

ฉันแน่ใจว่ามันจะจบแบบนี้
H.PWiz

มันใช้งานได้ดี แต่ฉันก็เชื่อว่าตัวเองNเป็น 77 แทนที่จะเป็น 78 ดังนั้นฉันจึงไม่ได้จับมัน
Nitrodon

ของคุณสั้นกว่าอยู่แล้ว
H.PWiz

ทางออกที่น่าสนใจ! ฉันได้เพิ่มวิธีแก้ไขปัญหาของฉันไปยังโพสต์ต้นฉบับถ้าคุณต้องการที่จะเห็นมัน
ข้าวสาลีตัวช่วยสร้าง

5

Haskell

รอยแตก@ คำตอบของ

s=map;hay=zipWith;a=head;h=s a.(hay(scanr id).s a<*>s(succ<$))$words"Haysta ayst ackH ays k ayst"

ลองออนไลน์!

รหัสเดิม:

hays=map;hay=zipWith;stack=head;h=stack{-
 hay.(hays.(stackany hay$or id).stack hay
<*>hays(sum$stack haystack<$>hay))-}$words
 "Haystack Hayst ackH aysta ckH aystac k"

แทนที่อักขระที่ลบด้วยขีดล่าง:

___s=map;hay=zipWith;__a__=head;h=s______
 _a_.(hay__(s__c_an_______r id).s____ _a_
<*>___s(su_____c________c_<$____))__$words
 "Haysta__ _ayst ackH ays__ _k_ ayst____"

วิธีการNeedleสร้าง: สตริงที่ส่วนท้ายของรหัสจะแบ่งออกเป็นคำ ถ่านแรกของแต่ละคำจะเพิ่มขึ้นหลายครั้งตามที่มีตัวอักษรในคำเช่น Haysta-> Hบวก 6 ตัวอักษร N->


5

Hexagony , 17 ไบต์, H.PWiz

]; N @ CL จ ;; (\ s;.. _

ลองออนไลน์!

เปรียบเทียบกับต้นฉบับ:

];N.@cl;e@;;(\H/;ya;_.>s.;t//<._  original
];N @cl;e ;;(\       . s.;     _  modified

การแสดง:

  ] ; N
 @ c l ;
e ; ; ( \
 . s . ;
  _ . .

คำอธิบาย

คะแนนโบนัส - ใช้ IP ทั้งหมด 6 รายการและทั้งหมดยกเว้นเซลล์เดียว!

เส้นทางที่มีสี

IP ที่ # 0 ]เริ่มต้นโดยมุ่งหน้าไปทางขวาไปตามเส้นทางสีดำเข้ามาใน
จากนั้นเราเปลี่ยนเป็น IP # 1 ซึ่งมุ่งหน้าไปตามเส้นทางสีแดงพิมพ์Nด้วยN;จากนั้นจึงห่อกลับเข้าไป]อีกครั้ง
จากนั้นเราจะเปลี่ยนไปใช้ IP # 2 ซึ่งหัวไปตามเส้นทางสีฟ้า, การจัดเก็บeในหน่วยความจำมือถือในปัจจุบันแล้วไปตามเส้นทางสีเขียว, การดำเนินงาน (มีการสะท้อนที่\) ;;(;ซึ่งพิมพ์ee, decrements เซลล์หน่วยความจำจากeไปแล้วพิมพ์d IP ดำเนินต่อไปตามเส้นทางสีส้มดำเนินการพิมพ์และเก็บในเซลล์หน่วยความจำปัจจุบัน มันดำเนินต่อไปตามเส้นทางสีน้ำตาลพิมพ์ด้วยd
Nl;selee;. ณ จุดนี้เราได้พิมพ์ไปแล้วNeedleดังนั้นส่วนที่เหลือเพิ่งจะเสร็จสิ้น ร้านค้า IP แล้วฮิตc จากนั้นเราจะเปลี่ยนไปใช้ IP # 3 ซึ่งหัวไปตามเส้นทางสีฟ้าตีใหญ่เข้าที่ตีกลับเข้าไป จากนั้นเราเปลี่ยนเป็น IP # 4 ซึ่งมุ่งหน้าไปตามเส้นทางสีเขียวกระดอนจากนั้นแยกเป็น(เนื่องจากเป็นบวก) สุดท้ายเราเปลี่ยนไป IP # 5 ซึ่งร้านค้าแล้วออกด้วย]
เส้นทางที่มีสี 2
\_]
_\]c
e@


ดี! นั่นคือทางออกที่ตั้งใจไว้
H.PWiz

4

Python 2 , 123 ไบต์

รอยแตกagtoever คำตอบของ

import numpy
print "".join([dir(numpy)[int(i)][0] for i in numpy.poly1d([-143/2e1,-31,14,131,61,184])(numpy.arange(-3,3))])

repl.it

เปรียบเทียบ:

print "".join([dir(numpy)[int(i)][1-0] for i in numpy.poly1d([-1*1433/252e1,-3232/1920.,4026./72/2/3.,613/(6*4.)*1,-4723./1.8e2,-9763/120.,-2689/(-1+5*17.),1+138*.4*2])(numpy.arange(-12/3,13%9))])
print "".join([dir(numpy)[int(i)][  0] for i in numpy.poly1d([-1  43 /2  e1,-3    1    ,               1     4    ,       1         3 1   ,  6     1       ,1   8  4  ])(numpy.arange(-   3, 3  ))])

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


ว้าว! เยี่ยมมาก! ฉันไม่ได้คาดหวังว่ามันจะแตกได้ในไม่ช้า
agtoever

ฉันเริ่มพัฒนาความท้าทายตาม numpy 1.13 ซึ่งฉันไม่พบในสภาพแวดล้อมแบบจำลองดังนั้นฉันต้องเขียนใหม่สำหรับ numpy 1.12 ... ;-)
agtoever

2

Javascript, 91 ไบต์

_=>(+{}+[])[+[]]+([][[]]+[])[3]+([][[]]+[])[3]+([][[]]+[])[2]+(![]+['t'])[2]+([][[]]+[])[3]

รอยแตกนี้ มันสนุกจริงๆ


2

เยลลี่ขนาด 14 ไบต์

คำตอบที่โจนาธานอัลลันแตก

“¡#ɦṢÞɠ»ḟ“¡pṄ»

ลองออนไลน์!

เปรียบเทียบ:

“¿ọ⁽ṅ*FỊ⁼g£¡#!ʋzoɦṪ£ṢÞḲÐɠ`”m3⁾“»jVḟ“¡!pṄ»
“          ¡#    ɦ  ṢÞ  ɠ      »  ḟ“¡ pṄ»

ฉันเคยวนœcซ้ำชุดย่อยต่างๆของสตริงตัวอักษรที่ใช้tr -dสำหรับแต่ละตัวกรองที่เป็นไปได้และgrepเอ็ดสำหรับเข็ม การใช้สมมุติฐานว่าไม่มีอักขระที่ใช้ในสตริงแรกถูกใช้ในคำตอบให้มันค้นหาคำตอบภายใน 15 วินาที


คนที่ฉันมีอยู่ในใจNebbed+ rubleไม่มีสิ่งใดrubเลย
Jonathan Allan


2

Java (OpenJDK 8), 191 ไบต์

แตกคำตอบของลุคสตีเวน

String d(){int h=3905055,m=55,s=15443;String d="0"+h*2+""+m*20+""+s*7,x="",y;for(int g=0;g<d.length();g+=3){y="";for(int e=0;e<3;e++)y+=d.charAt(e+g);x+=(char)Integer.parseInt(y);}return x;}

ลองออนไลน์!

ลบตัวอักษร:

int h=3609000-5055+911,m=557558,s=15441301-157*10000
       xx  xxx    xxxx     xxxx       x xxxxxxxxxxxx

นี้จะทำให้dประเมินซึ่งคาถา078101101100108101Needle


2

ทับทิม 149 ไบต์

แคร็กสิ่งนี้: /codegolf//a/144790/74216

โมดูลมีขนาดค่อนข้างเล็กดังนั้นฉันจึงเขียนสิ่งวันเกิดหลายเธรดและหวังว่าจะดีที่สุด

แก้ไข: และหลังจากนั้นก็พบคำตอบที่สั้นลง

x='hxDKFQOoqJLuVNW'
s="n=x.to_i 36;x.bytjs.jach_cons(3){|a,b,c|n+=n*b%c;n*=a^b};puts n%8675309==1388649 ?'Njjdlj':'Haystack'"
eval s.tr ?j,s.size.chr

ลองออนไลน์!

การเปลี่ยนแปลง:

x='yGwztsPXhxDkBKlCYdFjQnpUROfoHvqmTgbaJSLcEiZrIAuMVNW'
x='        hxD  K    F Q    O o  q     J L       u VNW'

# and here's some more variants for extra pwnage:
x=' G  tsPx     KlCYd  Qn U   o v mT  a SLc    I u  NW'
x='  w  s    D BKl  dF QnpU O        ba SLcEiZrI  MV  '
x='yGwz s Xh Dk K C  F  npU O  Hvq   b   L    rIAu V W'

2

dc , 34 ไบต์

93 9 2*+432212+ 47*4242160 7 2++*P

รอยแตกนี้ TIO

ฉันเริ่มโดยการแสดงตัวเลขของ Haystack (5215583380252484459) และ Needle (86197399743589) ต่อไปฉันทำการแยกตัวประกอบหลังซึ่งก็คือ 47 * 432323 * 4242169 จากนี้มันค่อนข้างง่ายที่จะสร้างหมายเลขเหล่านั้นใหม่

การทำเครื่องหมายอักขระที่ใช้:

6 93 3 9 2 2**+*+483622 1 2 3 3*+3*+89 47*+*+3 5 2* 269 158 9**107 97*2 4*++2 3 3*+42 14 2**+*+5*+5 2148 1 6 2*+*+68262 5 280 7 2 3 3*+5 2**+*+*+*+P
  XXX  XXX   XX  X X XX X X     X     XXXX                              X   X      XX X                    X                XXXXX     X     XX     X

GG! ฉันรู้ว่าการใส่ตัวเลขจำนวนมากเป็นความคิดที่ไม่ดี)
cab404

@ cab404 เพียงแค่อยากรู้อยากเห็น: คุณใช้การคำนวณที่แตกต่างกันมากเพื่อรับ 86197399743589 หรือไม่
agtoever


ว้าว. น่าทึ่งมาก นั่นอาจเป็นคำถาม codegolf อีกคำถาม: มีกี่วิธีในการได้รับผลลัพธ์ที่แน่นอนโดยการลบอักขระในนิพจน์ ...
ตลอดไป

ฉันเดาว่าโดยทั่วไปจะต้องใช้คณิตศาสตร์บางอย่างในการคำนวณ posibilities ทั้งหมดและพิสูจน์ให้เห็นว่ามีเพียงตัวเลขที่ของพวกเขา)
cab404

2

Hexagony , 19 ไบต์, Martin Ender

[@;(...e<l.a;./;N>;

ลองออนไลน์!

เปรียบเทียบกับต้นฉบับ

H[@;(...e<l.a;./$.>;\sN;\ac.>).;;;._y
 [@;(...e<l.a;./   ;  N     >  ;

รหัสที่คลายออก

  [ @ ;
 ( . . .
e < l . a
 ; . / ;
  N > ;

ดังนั้นฉันไม่เคยเขียนอะไรใน Hexagony แต่ฉันคิดว่ามีเพียง 37 ไบต์ที่ฉันสามารถเกิดขึ้นกับรอยแตก มาร์ตินฉันหวังว่าคุณจะรู้ว่าฉันใช้เวลามากมายในการพยายามคิดออก :)

ฉันอาจไม่ถูกต้อง แต่ฉันจะอธิบายสิ่งที่ฉันคิดว่ารหัสนี้กำลังทำอยู่:

โปรแกรมเริ่มต้นด้วย[ซึ่งจะย้ายไปที่ IP # 5 โดยอัตโนมัติ IP นี้เริ่มต้นที่มุมตะวันตกมุ่งหน้าไปที่[อีกครั้งซึ่งย้ายไปที่ IP # 4 จากที่นี่จะรันN;eหัวแล้วไปที่มุมทิศตะวันออกเฉียงใต้และรัน;ตีกลับไปทางขวาอีก;แล้วตัดไป(ซึ่ง decrements ปัจจุบันไปยังe dจากนั้นมันจะดำเนินต่อไป (ด้วยการห่อ) ...;.จากนั้นกระดอนไปที่lและไปที่[ครั้งสุดท้ายย้ายไปที่ IP # 3 มันรัน;, >การเปลี่ยนเส้นทางไปทางทิศเหนือไป.แล้ว<เปลี่ยนเส้นทางไปทางทิศตะวันตกตีeห่อไปและยุติบน;@

เวอร์ชัน verbose

ฉันดีใจที่คุณใช้ขนาดหกเหลี่ยมปกติสำหรับโปรแกรมเข็ม ฉันกำลังตรวจสอบโปรแกรม 19 ขนาด (สำหรับรูปหกเหลี่ยมด้านยาว 3) เมื่อฉันรู้ว่าคุณสามารถลบจำนวนอักขระใด ๆ และมันจะเติมหกเหลี่ยมโดยอัตโนมัติด้วย.s ในตอนท้ายซึ่งจะทำให้ยากต่อการถอดรหัสมากขึ้น Hexagony เป็นภาษาที่ชั่วร้ายสำหรับความท้าทายนี้เนื่องจาก (ส่วนใหญ่) อักขระใด ๆ ที่ถูกลบจะเปลี่ยนเส้นทางการดำเนินการทั้งหมดของโปรแกรม ที่ถูกกล่าวว่าฉันสนุกกับการพยายามที่จะเกิดขึ้นกับสิ่งนี้แม้ว่าฉันจะจบลงด้วยการดุร้ายบังคับในตอนท้าย :)


หากฉันทำผิดพลาด / พลาดอะไรโปรดแจ้งให้เราทราบ
โจ

เยี่ยมมากงานนี้ดูค่อนข้างแม่นยำ ฉันจะเปรียบเทียบกับสิ่งที่ฉันมีในช่วงสุดสัปดาห์
Martin Ender

1

Java (OpenJDK 8) , 151 ไบต์

รอยแตกคำตอบของเควิน Cruijssen

v->{String h="H";int x=7;return new String(new byte[]{(byte)((-~-~-~-~-~-~1^x++*x)+15),new Byte("10"+h.length())})+new StringBuffer("elde").reverse();}

ลองออนไลน์!

เปรียบเทียบ:

v->{String h="Haystack";int x=-7;return x<0?h:new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")}).toByteArray())+(new StringBuffer("hidden".substring(++x%3^4,--x-x--).replaceFirst("dd","e"+(char)(x*211%+93))).reverse());}
v->{String h="H       ";int x= 7;return       new String(                         new byte[]{(byte)(( -~-~-~-~-~-~      1^ x++*x)+15 ),new Byte("    1   0  "          +   h.length()    )        })               + new StringBuffer("    e                                 l          d    e"      )             .reverse() ;}

ฉันรู้สึกว่าส่วนสุดท้ายไม่ได้ตั้งใจ


โอเคนั่นเป็นวิธีที่ฉลาดในการสร้าง "edle" ในขณะที่เล่นไปรอบ ๆ ฉันคิดว่าฉันทำอะไรมากไปหน่อยและมีวิธีแก้ปัญหามากมายที่เป็นไปได้ .. ;) วิธีแก้ปัญหาที่ตั้งใจคือ: v->{String h="Haystack";int x=7;return new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~1^-x++*x)+15),new Byte(""+10+((x=h.length()*4/x)+x-7))}).toByteArray())+(new StringBuffer("hidden".substring(++x%3,x).replaceFirst("d","e"+(char)(x*21+3))).reverse());}(ไม่รู้ว่าทำไมฉันถึงรวม BigInteger ไว้ด้วยเพราะแค่อาร์เรย์ไบต์ก็พอแล้ว .. ) แต่ฉันชอบของคุณดีกว่า .. :)
Kevin Cruijssen

1

Brain-Flakขนาด 102 ไบต์

(((((((((()()()){}){}){}){}()){}()))()()<>)(()()()){}())<>((()((){}<>)))(({})[(((()()){}())(){}){}()])

รอยแตกคำตอบ H.PWiz ของ

ลองออนไลน์!

((((((((((()()()){}){}()){}){}()){}()))<({}[(()()()()){}])(([[]]({})<>)<>)>((()()())){}{})[()]))<[[]()]>((()){}){}((){}[][(<>){}<>])(<>){}(({}<>()[()])[(((()()()){}<[()]>)<(()){}>{}){}()])
 (((((((((()()()){}){}  ){}){}()){}()))      ()()                   <>)     (()()()) {}    () ) <      >((()      ((){}    <>)     )   )  (({}        )[(((()()  ){}  ()  )  () {}   ){}()])


1

Java โดยJohnathan S.

import java.util.*;interface Main{static void main(String[]args){Stack<Hay>s=new Stack();s.add(new Needle());System.out.println(s.get(s.indexOf(new Hay())+1).a);}}class Needle extends Hay{{a="Needle";}}class Hay{String a="Haystack";public boolean equals(Object o){return getClass().equals(o.getClass());}}

ติ้ว

เพียงแค่ลบลูปที่เพิ่ม Hay และไม่มีสิ่งใดเหลืออยู่บนสแต็ก แต่เป็นเข็ม


อืมดีจัง - ฉันไม่ได้คิดที่จะถอดวนออกจริง ๆ ! การลบequalsวิธีการก็ใช้งานได้เช่นกัน
Jonathan S.


0

T-SQL โดย phroureo , 757 ไบต์

seleCT 'Needle'

อย่างใดฉันไม่คิดว่าเป็นทางออกที่ตั้งใจไว้ ใช้อักขระที่ล้อมรอบด้วย{}:

create table a(l int,c int)
in{se}rt into a va{l}u{e}s (1,10),(2,1),(3,8),(4,0)
go
;CREATE FUN{CT}ION b(@ varchar(max)) returns varchar(max) as
begin return{ '}char('+@+'),'''','end 
go
;CREATE FU{N}CTION h(@ varchar(max),@a varchar(max), @b varchar(max), @c varchar(max), @d varchar(max), @e varchar(max), @f varchar(max), @g varchar(max), @h varchar(max))
r{e}turns varchar(max) as 
b{e}gin
return replace(replace(replace(replace(@,@a,@b),@c,@d),@e,@f),@g,@h)
end
{d}ec{l}ar{e} @x varchar(max),@ int=1,@y varchar(99)={'}'
,@D varchar(4)='Ha',@O varchar(4)='ys'
,@T varchar(3)='ta',@A varchar(4)='ck'
WHILE @<=4
BEGIN
set @y+=(SELECT dbo.b(c+100)from a where l=@)+' '
set @+=1
END
SELECT @x='select
left(dbo.h('''+@D+@O+@T+@A+''','+ left(@y,len(@y)-1) +'),char(56))'
execute(@x)

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