Polyglot Anagrams Robbers 'Thread


22

นี่คือกระทู้โจรของความท้าทายนี้

ตำรวจจะเลือกลำดับOEISและเขียนสองโปรแกรมเต็มในสองภาษาที่แตกต่างกันซึ่งสร้างรายการที่ n ในลำดับเมื่อได้รับ n ผ่าน STDIN โปรแกรมทั้งสองจะต้องเป็นแอนนาแกรมของกันและกันหมายความว่าแต่ละโปรแกรมสามารถจัดเรียงใหม่ได้จากตัวอักษรของอีกโปรแกรม

พวกเขาจะแสดงหมายเลข OEIS ซอร์สโค้ดสำหรับและชื่อของภาษาหนึ่งที่มีอยู่

คุณต้องค้นหาแอนนาแกรมของเอกสารต้นฉบับของตำรวจที่ทำงานในภาษาอื่นที่ไม่ใช่ภาษาที่ตำรวจใช้ ในการถอดรหัสคำตอบคุณจะต้องค้นหาภาษาและโปรแกรมใด ๆที่สร้างลำดับและเป็นแอนนาแกรมของต้นฉบับไม่จำเป็นต้องเป็นคำตอบที่ตำรวจกำลังคิด

คุณอาจส่งออกด้วยรหัสตัวอักษรหรือรวมถึง STDERR ในการแก้ปัญหาของคุณ แต่ถ้าตำรวจได้ระบุวิธีการแก้ปัญหาที่ซ่อนอยู่ของพวกเขาทำเช่นนั้น เอาต์พุตทศนิยมไปที่ STDOUT เป็นตัวถอดรหัสที่ถูกต้องเสมอ

ดังนั้นตำรวจจึงมีแรงจูงใจที่จะทำให้มันยากที่สุดเท่าที่จะทำได้เพื่อหาภาษาใด ๆ ที่ทำงานโดยใช้รายการสัญลักษณ์

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

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

คณะผู้นำ

ขอบคุณมากสำหรับทุก ๆ คนที่เกิดขึ้นในความท้าทายนี้

นี่คือกระดานผู้นำตามที่ยืน

Place  User             Score
-----------------------------
1      Adnan            3
1      Kritixi Lithos   3
1      Emigna           3
1      milk             3
5      Steven H.        2
5      Wheat Wizard     2
5      jimmy23013       2
8      ETH Productions  1
8      Dennis           1
8      alleks           1
8      Martin Ender     1
8      Oliver           1
8      Conor O'Brien    1

ไม่แน่ใจว่าฉันเข้าใจส่วน "แอนนาแกรม" คุณสามารถอธิบายรายละเอียดเล็กน้อยได้ไหม?
Buffer Over อ่าน

@TheBitByte โซลูชันอื่นจะต้องใช้อักขระตัวเดียวกันกับตัวจริง แต่จัดเรียงตามลำดับที่แตกต่างกัน
ข้าวสาลีตัวช่วยสร้าง

ไม่มีอักขระเพิ่มเติมหรือไม่
Buffer Over อ่าน

@TheBitByte ใช่และไม่ต้องลบตัวอักษรใด ๆ
Wheat Wizard

คำตอบ:


9

05AB1E , 38 ไบต์, Loovjo , A000290

nXtdief e():return X*X
pr e(input())##

ลองออนไลน์!

มีโอกาสมากที่ไม่ใช่โซลูชันที่ตั้งใจ แต่ใช้งานได้

คำอธิบาย

n      # square input
 X     # push 1
  t    # push sqrt(1)
   d   # push is_number(1.0)
    i  # if true do the rest of the code (1.0 is not a number so it will never execute)

1
1.0 is not a number? คุณช่วยอธิบายรายละเอียดได้ไหม?
ETHproductions

1
@ETHproductions: ฟังก์ชั่นการตรวจสอบว่าจำนวนเท่านั้นประกอบด้วยis_number 0-9ในฐานะที่.เป็นตัวเลขที่ไม่มันจะกลายเป็นเท็จ ฟังก์ชั่นนี้อาจใช้ชื่อที่สื่อความหมายได้มากกว่า :) :)
Emigna

8

Jolf, 15 ไบต์, Adnan , A000290

*&"?!#$|<=@\^{}

ลองที่นี่! ไม่ใช่โซลูชันที่ตั้งใจไว้ แต่แน่นอนว่ามันใช้ได้

คำอธิบาย

*&"?!#$|<=@\^{}
*                multiply
 &               the two inputs to this func, x, y: x && y
                 returns y if x and y, or the falsey argument.
  "?!#$|<=@\^{}  this string is always truthy, so the second arg is used.
                 two implicit inputs are taken, both equal to the first arg
                 so, this corresponds to *xx, which is x^2.

7

05AB1E , 49 ไบต์, ตัวช่วยสร้างข้าวสาลี , A000290

อันที่จริงวิธีการเดียวกันกับการแตกของ Emigna: p.

n4i<({({)({[()]){))()()()turpetne/"*"*splint>}}}}

คำอธิบาย:

n          # Square the input
 4i        # If 4 == 1, do the following...
   <({...

ลองออนไลน์!


1
ไม่ใช่วิธีการแก้ปัญหาที่ฉันกำลังมองหา แต่ +1 ต่อไป
ตัวช่วยสร้างข้าวสาลี


6

2sable , 7 ไบต์, Kritixi Lithos , A005843

รหัส:

r^#ei2*

คำอธิบาย:

r         # Reverse the stack, which is a no-op
 ^        # XOR the input with itself, always leading to 0
  #       # If 1, break (which stops the program)
   e      # Compute input nPr input, which always leads to 1
    i     # If equal to one, do the following..
     2*   #   Multiply the input by 2.

ลองออนไลน์!


มันวิเศษมากที่รหัสจริงมีขนาดเพียง 2 ไบต์!
Kritixi Lithos

6

Hexagony , 13 ไบต์, Adnan , A002378

?"&\>=})\*!@<

ลองออนไลน์!

กางออก:

  ? " &
 \ > = }
) \ * ! @
 < . . .
  . . .

ไม่ใช่ 100% ไม่ว่าจะเป็นของแท้หรือไม่เพราะซ้ายบน\ไม่ได้ใช้

มัน<\>เป็นแค่มิเรอร์ดังนั้นโปรแกรมจึงเป็นเส้นตรงทั้งหมด:

?"&)}=*!@

?          Read input.
 "         Move back and left.
  &        Copy input.
   )       Increment copy.
    }=     Move forward and right and turn around (to face the n and n+1 edges).
      *    Multiply.
       !   Print.
        @  Terminate.

5

V , 13 ไบต์, DJMcMayhem , A002275

v!:x]''"
@ai1

ลองออนไลน์!

นี่อาจเป็นทางออกแรกในภาษาที่ผู้เขียนตั้งใจไว้


คำอธิบาย

v!:x]''"   Does nothing
@ai1       inserts 1 a times

บางทีคุณควรปล่อยให้ DJMcMayhem รู้ว่าคุณเสียงแตก? ;)
ETHproductions

@ ETHproductions ฉันบอกเขาในการแชทฉันอาจจะบอกเขาอีกครั้งในความคิดเห็น
ข้าวสาลีตัวช่วยสร้าง

1
This might be the first solution in the language the author intended.จับได้เห็นชัดตรงเผง. :)
DJMcMayhem

5

2sable, Conor O'Brien , A000290

~*

ลองออนไลน์!

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

หลังจากดูเอกสารฉันก็สามารถหาคำอธิบายได้:

~         Push Input OR Input (always pushes the input)
 *        Multiply that by Input 

5

Pyth , 26 ไบต์, Steven H. , A023443

รหัส:

tQ.qly 7:esau0euii s uxC !

ลองออนไลน์

ค่อนข้างง่าย:

 Q                            Reads input
t                             Substracts 1 from it
  .q                          Quits program (implicit print)
    ly 7:esau0euii s uxC !    None of this ever plays a part...
                                I just thought it'd be fun to scramble it.

2
ทางออกที่ตั้งใจไว้! (ลบด้วยการแย่งแน่นอน)
สตีเวนเอช

1
ที่น่ากลัว! ความคิดดี. ขออภัยที่ไม่แจ้งให้คุณทราบโดยตรง ... ตัวแทนน้อยเกินไป
บรรยาย

ไม่มีปัญหา! ยินดีด้วย.
Steven H.

5

Python 3, 118 ไบต์, ETHproductions, A042545

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
(print(a[-2]),) #.0fhlmop|

ทดสอบบน Ideone

ส่งตำรวจ

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

มีอะไรแตกต่างกัน

การส่งตำรวจไม่ทำงานใน Python 3 ด้วยเหตุผลสองประการ

  • ฟังก์ชันป้อนข้อมูลของ Python 2 จะทำการป้อนข้อมูลหนึ่งบรรทัดโดยอัตโนมัติในขณะที่คู่ของ Python 3 เพียงแค่ส่งคืนบรรทัดเป็นสตริง เราสามารถโทรหาintเพื่อแก้ไขปัญหานี้

  • print เป็นคำสั่งใน Python 2 แต่เป็นฟังก์ชั่นใน Python 3 โดยเฉพาะนั่นหมายความว่าเราต้องล้อมรอบอาร์กิวเมนต์ด้วยวงเล็บ

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

แทนส่วนของเราติดตาม1 / s s

การเริ่มต้นของs - s=1/(801**.5-28)- กลายเป็นประหยัดตัวละครs=801**.5-281/()

ปัจจัยของ[-1] อีกต่อไปในการปรับปรุงของ- - กลายเป็นต้นทุนตัวละครint(s)int(1/s)1/

การปรับปรุงของs - s=1/(s-int(s))- กลายเป็นs=1/s-1//sต้นทุนตัวละครแต่ประหยัดตัวละคร1//(int())

ตัวละครบันทึกไว้ใน()(int())ปกเหล่านั้นเราจำเป็นที่จะพอร์ตรหัสเพื่อหลาม 3 1//แต่พวกเขาได้รับค่าใช้จ่ายเรา เราสามารถนำ//มาจากความคิดเห็น แต่เราจะต้องบันทึก1ที่อื่น

วิธีการหนึ่งที่ (เพียงคนเดียว?) ของการประหยัดที่จำเป็น1คือการแทนที่1ในการเริ่มต้นของกับ ค่าใช้จ่ายเหล่านี้สี่ตัวละคร แต่เราสามารถใช้0==000มาจากความคิดเห็น

จนถึงตอนนี้เรามีรหัสต่อไปนี้

i=int(input());s=801**.5-28;a=[0,0==0]
for p in range(i):a+=[a[-2]+a[-1]*int(1/s)];s=1/s-1//s
print(a[i]) #,,,.()0fhlmo|

ในการกู้คืนหนึ่งใน=ตอนนี้เรา "เป็นหนี้" เราสามารถเขียนการกำหนดค่าเริ่มต้นของsและaด้วยการมอบหมายเพียงครั้งเดียว: s,a=801**.5-28,[0,0==0]นอกจากนี้สิ่งนี้จะช่วยประหยัด;และค่าใช้จ่าย,ซึ่งสามารถเพิ่มและลบออกจากความคิดเห็นได้

ที่สอง=จะถูกบันทึกไว้โดยไม่ได้การจัดเก็บการป้อนข้อมูลในตัวแปรคือการเขียนแทนประหยัดตัวละครในrange(int(input())) i=เราใช้ฉันหลังจากห่วงเช่นกัน แต่ฉันTHองค์ประกอบของเป็นเพียงคนที่สองจากขวาเพื่อให้เราสามารถแทนที่ด้วย ด้วยเหตุผลเดียวกันในร่างกายของวงสามารถถูกแทนที่ด้วยi-2a[-2]iในร่างกายห่วงสามารถถูกแทนที่ด้วย

ตอนนี้เรามีการเปลี่ยนแปลงการทำงานของรหัส Python 3:

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
print(a[-2]) #,.()0fhlmop|

อย่างไรก็ตามรหัสนี้ยังใช้งานได้ใน Python 2! วิธีหนึ่งในการแก้ไขปัญหานี้คือการแทนที่print(a[-2])ด้วย(print(a[-2]),); เรามีตัวละครที่เราต้องการในความคิดเห็น ดังกล่าวก่อนการพิมพ์เป็นฟังก์ชั่นในหลาม 3 ดังนั้นนี้สร้าง tuple ที่( ไม่ ) อย่างไรก็ตามคำสั่งการพิมพ์ของ Python 2 คือSyntaxErrorภายในตัวอักษร tuple


แดงดี ... บางทีฉันควรจะใช้เวลาเพิ่มอีกนิดในการเขียนเวอร์ชันความคิดเห็นน้อย ฉันจะโพสต์โซลูชันที่ฉันตั้งใจไว้
ETHproductions

ฉันได้สร้างเวอร์ชันที่ปรับเปลี่ยนแล้วของโปรแกรมของฉันซึ่งใช้งานได้ทั้ง Python 2 และ 3 ไม่ใช้ความคิดเห็นและมีวิธีแก้ปัญหาที่แตกต่างกันมาก มันคุ้มค่าการโพสต์เป็นคำตอบที่แยกจากกัน?
ETHproductions

ถ้ามันใช้ได้ทั้ง Python 2 และ 3 นั่นไม่ใช่ทางออกที่ถูกต้อง รอยแตกไม่สามารถทำงานได้ในภาษาต้นฉบับ
Dennis

ฉันไม่เข้าใจ รอยแตกที่ตั้งใจไม่ได้อยู่ในงูหลาม
ETHproductions

โอ้คุณหมายถึงการส่งตำรวจคนใหม่ ฉันคิดว่าเรากำลังพูดถึงรอยแตกที่แตกต่างกับอันนี้ ... แน่นอนไปข้างหน้าและโพสต์มัน
Dennis



3

05AB1E , 12 ไบต์, tuskiomi , A000012

1,(FI1=1=1,)

ลองออนไลน์!

คำอธิบาย

1,            # print 1
  (           # negate input
   F          # that many times do (i.e. no times)
    I1=1=1,)  # the rest of the code

ตลก. ฉันไม่มีโปรแกรมที่ 2 สำหรับเรื่องนี้เพราะฉันไม่เข้าใจว่าตำรวจและโจรเป็นใคร งานที่ดีมีความคิดสร้างสรรค์!
tuskiomi

3

05AB1E , 38 ไบต์, Conor O'Brien , A000290

n2iJ=>eval(Array(J).fill(J).jo`+`)|-2;

ลองออนไลน์!


คำอธิบาย

สิ่งนี้มีพื้นฐานมาจาก แตก Emigna ที่นี่

n   #Squares the number
 2i #Runs the rest of the code if 2==1

ฉันได้แก้ไขคำตอบของฉันด้วยวิธีแก้ปัญหาที่ตั้งใจไว้ งานที่ดี! ฉันจะต้องทบทวนวิธีการของฉันอีกครั้ง ...
Conor O'Brien






1

05AB1E , 25 ไบต์, Mego , A000583

รหัส:

nnYi=put("");prit`Y**4`,X

คำอธิบาย:

n       # Square the input
 n      # Square the squared input
  Y     # Constant that pushes 2
   i    # If equal to 1, do the following:
    =put...

ลองออนไลน์!


มาเลยคุณชนะฉันไป 12 วินาที :)
Emigna

@Emigna เวลาระหว่างคำตอบคือสิ่งแปลก: p.
Adnan

1
มันไม่ได้ลงทะเบียนในครั้งแรกที่ฉันกดโพสต์เช่นกันดังนั้นพวกเขาจะเกือบจะทันที :)
Emigna

1

Dip , 8 ไบต์, Oliver , A000042

(1J&F},1

คำอธิบาย

              #Implicit Input
(             #Start range loop
 1            #Push 1 to the stack
  J           #Join all the elements in the stack
   &          #End program
    F},1      #These are ignored

สิ่งที่ตลกคือนี่เป็นภาษาที่ตั้งใจไว้! Dip เป็น esolang ที่สร้างโดย Oliver

กรณีทดสอบและการเรียกใช้ Dip จาก Command-Line

$python3 dip.py
Dip v1.0.0 by Oliver Ni.
>>> (1J&F},1
> 4
1111
>>> (1J&F},1
> 7
1111111

1

2sable, 14 ไบต์, Dopapp , A121377

Q@5 2*%6 8*+.&

ลองออนไลน์

มันทำงานอย่างไร (มากหรือน้อย):

Q@
  5              # Push 5
    2            # Push 2
     *           # Pop (2), pop (5), push 5*2=10
      %          # Pop (10), pop (input), push input%10
       6         # Push 6
         8       # Push 8
          *      # Pop (8), pop (6), push 8*6=48
           +     # Pop (48), pop (input), push input+48
            .&


1

Dip , 5 ไบต์, Oliver , A000012

`¸WW/

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

คำอธิบาย

`¸                  # push character `¸`
  W                 # pushes 1000000
   W                # pushes 1000000 also
    /               # divides the last two items in stack resulting in 1.0
                    # implicit output (1.0)

ทางเลือกในการแก้ปัญหา (ความอนุเคราะห์จาก @milk)

นูน 5 ไบต์

WW¸`/

ลองออนไลน์!

คำอธิบาย

                  // implicit input
W                 // pushes -1
 W                // pushes -1 also
  ¸               // calculates the LCM of the two numbers (which evaluates to 1)
   `              // finds its string representation
    /             // slices the string (so that it would evaluate to "1")
                  // implicit output

1
รอยแตกแบบอื่นในนูน: WW¸` /
นม

@ นมขอบคุณ! ฉันเพิ่มไว้ในการแก้ไขล่าสุดของฉัน
Kritixi Lithos

โปรแกรม Convex ของคุณไม่ทำงานอย่างที่คุณคิด ณ ตอนนี้มันกด -1 สองครั้ง LCMs (ซึ่งจะเป็น 1) ค้นหาการแทนค่าสตริงและในที่สุดก็ตัดสตริง (ซึ่งจะเป็น"1") โดย[input]ตัวละครทุกตัว (เนื่องจากอินพุตเป็นตัวเลข
GamrCorps

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