579085261 คือ CRAZY, 725582 is GOLF, 10757494 is …?


39

งานของคุณคือการแปลเลขที่ 103ให้เป็นคำภาษาอังกฤษโดยใช้วิธีการที่อธิบายไว้ด้านล่าง

อย่างไร?

  1. สร้างรายการปัจจัยหลัก (พร้อมการทำซ้ำ) ของหมายเลขอินพุท
  2. จัดเรียงรายการ:
    • หาก2ไม่ใช่ปัจจัยสำคัญอันดับหนึ่งให้เรียงรายการตามลำดับจากน้อยไปหามาก
    • หาก2เป็นหนึ่งในปัจจัยหลักให้ลบออกจากรายการและเรียงลำดับปัจจัยที่เหลือตามลำดับจากมากไปน้อย
  3. แปลแต่ละปัจจัยเป็นตัวอักษรโดยใช้ตารางต่อไปนี้:

     3 = S   13 = L   29 = X   43 = O   61 = Z   79 = H  101 = K  
     5 = P   17 = Q   31 = N   47 = R   67 = T   83 = V  103 = Y  
     7 = M   19 = U   37 = C   53 = A   71 = E   89 = D  
    11 = F   23 = I   41 = W   59 = G   73 = J   97 = B  
    

หมายเหตุ : ตารางนี้สร้างขึ้นเชิงประจักษ์เพื่อเพิ่มจำนวนคำที่เป็นไปได้สูงสุด สำหรับคนที่อยากรู้อยากเห็นนี่คือรายการของ 2,187 คำที่สามารถเข้ารหัสด้วยวิธีนั้น (อาจรวมถึงภาษาที่หยาบคาย) ไม่รับประกันว่าจะดีที่สุด แต่ก็ดีพอสำหรับความท้าทายนี้

ตัวอย่าง

ตัวอย่างที่ 1: 579085261 (เรียงลำดับขึ้น)

  1. ปัจจัยสำคัญที่มี[37, 47, 53, 61, 103]
  2. 2ไม่ใช่ปัจจัยหลักดังนั้นเราเก็บรายการเรียงตามลำดับจากน้อยไปหามาก
  3. 37 = C, 47 = R และอื่น ๆ ผลลัพธ์คือ "CRAZY"

ตัวอย่างที่ 2: 725582 (ลำดับจากมากไปหาน้อย)

  1. ปัจจัยสำคัญที่มี[2, 11, 13, 43, 59]
  2. 2เป็นปัจจัยสำคัญเพื่อให้เราเอามันออกไปและเรียงลำดับรายชื่อในลำดับจากมากไปน้อยซึ่งจะช่วยให้:
    [59, 43, 13, 11]
  3. 59 = G, 43 = O, ฯลฯ เอาต์พุตคือ "GOLF"

ตัวอย่างที่ 3: 10757494 (ด้วยปัจจัยซ้ำ)

  1. ปัจจัยสำคัญที่มี[2, 11, 71, 71, 97]
  2. 2เป็นปัจจัยสำคัญเพื่อให้เราเอามันออกไปและเรียงลำดับรายชื่อในลำดับจากมากไปน้อยซึ่งจะช่วยให้:
    [97 71, 71, 11]
  3. 97 = B, 71 = E, 11 = F. ผลลัพธ์คือ "BEEF"

คำอธิบายและกฎ

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

กรณีทดสอบ

34874          --> ARM
483254         --> BAR
353722         --> EAR
494302         --> EGG
39061          --> FAT
6479           --> FUN
60421          --> ICE
54166          --> JAM
48911474       --> BETA
2510942        --> BOOM
2303854        --> DOOM
844261         --> FIRE
1606801        --> MAZE
1110085        --> PAGE
5212974        --> BALLS
67892046       --> BEANS
885396199      --> CREEK
67401037       --> FUNKY
27762173       --> QUICK
1238440506     --> ARROWS
33045832681    --> CRAGGY
1362714005     --> PIRATE
137302698      --> TROLLS
358310128062   --> BEGGARS
40255151586    --> DETAILS
164633248153   --> FIXATED
621172442227   --> UNRATED
2467812606     --> VACUUMS
86385078330    --> GROWNUPS
26607531423091 --> UNWORTHY

9
Ohhh อึ ... 05AB1E แคชตีเมื่อใช้Òใน579085261ความรู้สึกเช่น <s> Emigna </ s> Adnan ได้เริ่มต้นแล้ว
Magic Octopus Urn

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

@ mbomb007 ใช่มีหลายรูปแบบที่เป็นไปได้ ความคิดเริ่มต้นของฉันคือการเข้ารหัสคำใด ๆโดยทำงานกับกลุ่มของตัวอักษร
Arnauld

5
กรณีทดสอบสำหรับความท้าทายนี้เตือนให้นึกถึงสิ่งที่ "ค้นพบชื่อ X ของคุณ" บน Facebook ค้นหาชื่อเรื่องของภาพยนตร์ที่คุณอยู่! ขั้นตอนที่หนึ่งเลือกหมายเลขเฉพาะที่คุณชื่นชอบ<=103... ผลลัพธ์ของคุณคือPIRATE MAZEหรือDOOM VACUUMS...
mbomb007

2
@ Qwerp-Derp มันถูกสับแบบสุ่มครั้งแรกและทดสอบกับพจนานุกรม ~ 106K คำซึ่งสูงถึง 11 ตัวอักษร (ไฟล์อยู่ใน HD ของฉันเป็นเวลานาน - ฉันคิดว่ามันถูกสกัดมาจากTWL ) จากนั้นฉันก็บังคับให้ 'S' เป็นคนแรกหรือคนสุดท้ายเพื่อเพิ่มคำพหูพจน์ให้มากที่สุดและลองใช้การแลกเปลี่ยนตัวอักษรสองสามครั้งโดยใช้การผสมผสานที่ดี (ซ้ำ) ในที่สุดฉันก็หมดความอดทนและเขียนความท้าทาย :-) ที่จริงก่อนหน้านี้ทั้งหมดฉันพยายามที่จะพิจารณาจำนวนตัวอักษรตามตำแหน่งภายใน Wordแต่มันก็ไม่ได้ยอดเยี่ยมเท่านี้
Arnauld

คำตอบ:


13

เยลลี่ , 29 27 ไบต์

ÆEµØA“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?xḊṚḢ}¡

ขอบคุณ @JonathanAllan สำหรับการตีกอล์ฟ 1 ไบต์!

ลองออนไลน์!

พื้นหลัง

“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’

เป็นตัวอักษรตัวเลข อักขระระหว่างเครื่องหมายคำพูดจะถูกแทนที่ด้วยดัชนี 1 รายการในหน้ารหัสวุ้นและอาร์เรย์ผลลัพธ์จะถูกแปลเป็นตัวเลขฐาน 250 นี้อัตราผลตอบแทนจำนวนเต็มC: = 288824892868083015619552399

มันทำงานอย่างไร

ÆEµØA“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?xḊṚḢ}¡  Main link. Argument: n

ÆE                           Yield the exponents of n's prime factorization, with.
                             zeroes. This yields an array A.
  µ                          Begin a new monadic chain with argument A.
   ØA                        Set the return value to “ABC...XYZ”.
     “¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?        Select the c-th permutation of the alphabet, yielding
                             s := “SPMFLQUIXNCWORAGZTEJHVDBKY”.
                      Ḋ      Dequeue; yield A without its first element, stripping
                             the exponent of 2.
                     x       Repeat the k-th letter of s r times, where r is the
                             exponent of the k-th odd prime number.
                          ¡  Combine the two links to the left into a quicklink:
                        Ḣ}     - Apply head to the right argument (A), yielding the
                                 exponent of 2. Since n is at most divisible by the
                                 first power of 2, this yields 1 for even numbers
                                 and 0 for odd ones. Call the link to the left that
                                 many times on the previous return value.
                       Ṛ       - Reverse the string to the left.

10

เยลลี่ 36 ไบต์

“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?ØA1;;⁶
×107ÆE¢×UḢ¡t⁶

ลองออนไลน์!

คำอธิบาย

ค่าคงที่ตัวช่วย (สร้าง“SPMFLQUIXNCWORAGZTEJHVDBKY ”ด้วย 1 ที่ได้รับการเติมล่วงหน้า)

“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?ØA1;;⁶
“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’          288824892868083015619552399 (compressed representation)
              œ?ØA      th permutation of the alphabet
                  1;    prepend 1
                    ;⁶  append a space

โปรแกรมหลัก

×107ÆE¢×UḢ¡t⁶
×107           Multiply {the input} by 107
    ÆE         Convert to a list of frequencies for each factor
      ¢×       {Vectorized} multiply by the return value of 1£
        UḢ¡    Delete the first value, reverse the list that many times
           t⁶  Delete trailing/leading space

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

เยลลี่ขนาด 31 ไบต์แรงบันดาลใจจากคำตอบของ @ Leakynun

“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?ØA⁷;
ÆfÆCị¢U⁸¡U

ลองออนไลน์! (แก้ไขเล็กน้อยเพื่อให้ทำงานเร็วขึ้นมาก)

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

คำอธิบาย

ค่าคงที่ตัวช่วย (สร้าง“¶SPMFLQUIXNCWORAGZTEJHVDBKY”ขึ้นบรรทัดใหม่)

“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’œ?ØA⁷;
“¡3ḅḲ+Ṿɼ¡ẏƙẊƘ’          288824892868083015619552399 (compressed representation)
              œ?ØA      th permutation of the alphabet
                  ⁷;    prepend newline

โปรแกรมหลัก

ÆfÆCị¢U⁸¡U
Æf          Produce list of prime factors (repeating repeated factors)
  ÆC        Map the nth prime to n
    ị¢      Index into the output of 1£
      U     Reverse
        ¡   a number of times
       ⁸    equal to the input
         U  Reverse again

ซึ่งเป็นวิธีที่ดีมากในการจัดเก็บการเปลี่ยนแปลงของตัวอักษรที่ ...
รั่วนูน

อ่าคุณใช้อะตอมเรียงสับเปลี่ยนของฉันด้วย: D
Jonathan Allan

9

05AB1E , 39 38 ไบต์

ÒW<iR¨}26LØR•6Ê2"£´õþÕàçŸôëÂÛ*™•36BS:J

ใช้การเข้ารหัสCP-1252 ลองออนไลน์!


8
ฉันรู้ว่ามันเป็นหนึ่งในคุณฮ่าฮ่าฮ่า การเสาะหาเศษขยะเสร็จครึ่งทาง
Magic Octopus Urn

6
@carusocomputing การดูแคชอาจทำให้เกิดแรงกดดันได้ฮ่าฮ่า
Adnan

Øเป็นส่วนหนึ่งของสิ่งนี้ที่เอาชนะฉันได้ถึง 20 ไบต์แล้ว: P
Magic Octopus Urn

ฉันคิดว่าคุณสามารถทำได้Ò26ÝØR•1Sî? ¾± = & ÔìÍècS¦ÁÜd • 36BS: Já¹GRสำหรับ 37.
Emigna

2
มันไม่มีประสิทธิภาพมากนัก;)
Emigna

8

Python 2, 220 217 ไบต์

n=input()
i=1
L=[]
exec'i+=1;c=0\nwhile n%i<1:c+=1;n/=i\nif c:L+=[i]*c\n'*n
T='SPMFLQUIXNCWORAGZTEJHVDBKY'
print''.join(T[[p for p in range(3,104)if all(p%k for k in range(2,p))].index(q)]for q in[L,L[:0:-1]][L[0]<3])

ลองออนไลน์ -ใช้งานกรณีทดสอบที่เล็กที่สุดโดยไม่ใช้หน่วยความจำไม่เพียงพอ

Ungolfed:

รุ่นนี้ไม่ได้ใช้execดังนั้นคุณสามารถทดสอบกรณีทดสอบทั้งหมดโดยไม่ต้องใช้หน่วยความจำหมด

n=input()
i=1
L=[]
while~-n:
 i+=1;c=0
 while n%i<1:c+=1;n/=i
 if c:L+=[i]*c
if L[0]<3:L=L[:0:-1]
T='SPMFLQUIXNCWORAGZTEJHVDBKY'
print''.join(T[[p for p in range(3,104)if all(p%k for k in range(2,p))].index(q)]for q in L)

ลองออนไลน์


8

Ruby , 139 138 134 125 120 115 + 7 = 146 145 141 132 127 122 ไบต์

ใช้-rprimeแฟล็กสำหรับ +7 ไบต์

-1 ไบต์จาก @daniero -4 2ไบต์โดยการจดจำว่าผมก็สามารถจะตรวจสอบหารปกติแทนการตรวจสอบส่วนที่สำคัญสำหรับการดำรงอยู่ของ

-9 bytes จากโซลูชัน Python ของ @ mbomb007 ทำให้ฉันนึกถึงวิธีที่สั้นกว่าในการเรียกคืนจดหมายที่ตรงกัน

-5 ไบต์เนื่องจากอนุญาตให้ใช้ช่องว่างต่อท้ายได้

-5 ไบต์จากการค้นพบ Enumerable#find_index

->n{x=Prime.prime_division n;x.reverse!if n%2<1;x.map{|i,c|" SPMFLQUIXNCWORAGZTEJHVDBKY"[Prime.find_index i]*c}*''}

ลองออนไลน์! (กรณีทดสอบทั้งหมด)

คำอธิบาย

->n{                                   # Anonymous procedure with one argument n
    x=Prime.prime_division n;          # Get prime factorization of n, sorted
                                       # p0^e0 * p1^e1 ... -> [[p0,e0],[p1,e1],...]
    x.reverse!if n%2<1;                # Reverse if divisible by 2
    x.map{|i,c|                        # For each prime/exponent pair:
        " SPMFLQUIXNCWORAGZTEJHVDBKY"[ # Get corresponding character by obtaining:
            Prime.find_index i]        # Determine index of the current prime
                               *c      # Repeat the letter by the supplied exponent
                                 }*''} # Join all letter sequences together

ทำได้ดีนี่. คุณสามารถลบช่องว่างระหว่างzipและ"
daniero

7

Bash + GNU ยูทิลิตี้ + แพ็คเกจเกม bsd, 170

ดูเหมือนจะไม่เหมาะสม แต่มันใช้งานได้:

p='printf %03d\n'
a=(`factor $1`)
x=$[a[1]<3]
$p `primes 3 104`|paste - <(fold -1<<<SPMFLQUIXNCWORAGZTEJHVDBKY)|join -o1.2 - <($p ${a[@]:x+1})|(((x))&&tac||cat)|tr -d \\n

ลองมันออนไลน์



6

Japt , 51 50 ไบต์

โค้ด 49 ไบต์, +1 สำหรับ-Pแฟล็ก

%2?Uk :Uk Åw)£`yspmflquixncÙgz’jhvdbk`g#ho fj bX

ลองออนไลน์!

นี่อาจเป็นวิธีที่สั้นกว่านี้หากมีเพียง Japtapt เท่านั้นที่มีคุณสมบัติเพิ่มเติม ...

คำอธิบาย

`yspmflquixncÙgz’jhvdbk`เป็นเพียงสตริงเดียวที่ทุกคนใช้การบีบอัดมากที่สุดเท่าที่ Japt สามารถบีบอัดได้ (สั้นกว่าต้นฉบับ 3! 3 ไบต์) เครื่องมือบีบอัดในตัวของ Japt ในขณะนี้แทนที่ตัวอักษรตัวพิมพ์เล็กทั่วไปด้วยอักขระไบต์เดียว

ลองตรวจสอบรหัสจริง:

%2?Uk :Uk Å  w)
%2?Uk :Uk s1 w)
%2?             // If the input mod 2 is non-zero,
   Uk           //   take the prime factors of the input (U).
      :Uk       // Otherwise, take the prime factors of the input,
          s1 w  //   slice off the first one (2), and reverse.

จากนั้น£จะใช้เพื่อแทนที่แต่ละรายการXในผลลัพธ์ดังนี้:

"string"g#h o fj bX
"string"g104o fj bX

         104o         // Create the range [0...104).
              fj      // Filter to only items Z where Z.j() is truthy (Z is prime).
                      // This results in the list of prime numbers from 2 to 103.
                 bX   // Take the index of X in this list.
"string"g             // Get the char in the compressed string at that index.
                      // For `y`, the index is 26, but since the string is only 26 chars
                      // long, Japt wraps around and grabs the first char in the string.

ผลลัพธ์คืออาร์เรย์ของอักขระ ณ จุดนี้ดังนั้น-Pแฟล็กรวมเข้ากับสตริงเดี่ยวและผลลัพธ์ถูกส่งไปยังเอาต์พุตโดยปริยาย



5

Pyth , 54 47 ไบต์

7 ไบต์ขอบคุณ isaacg

s__W%Q2@L."AZ❤O❤❤❤❤❤❤Q❤9❤❤×❤❤"xL_MP#r_3_103-PQ2

( แทนอักขระที่ไม่สามารถพิมพ์ได้)

Pyth ไม่มีบิวด์อินจำนวนมาก ...

hexdump:

0000000: 73 5f 5f 57 25 51 32 40 4c 2e 22 41 5a 03 4f f3 s__W%Q2@L."AZ.O.
0000010: 14 af 15 ed f5 51 90 39 d5 18 d7 20 a8 22 78 4c .....Q.9... ."xL
0000020: 5f 4d 50 23 72 5f 33 5f 31 30 33 2d 50 51 32    _MP#r_3_103-PQ2

ลองออนไลน์!



@isaacg ฉันลองแล้วก็ไม่รู้ว่าทำไมมันถึงสร้างผลลัพธ์ที่แปลกสำหรับอันสุดท้าย
Leun Nun

ฉันไม่รู้ว่าคุณหมายถึงอะไร: pyth.herokuapp.com/…
isaacg

@isaacg มันแปลกมาก
Leun Nun

5

J , 59 ไบต์

'SPMFLQUIXNCWORAGZTEJHVDBKY'{~(p:>:i.26)i.[:|.@}.^:(2={.)q:

ลองออนไลน์!

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

'SPMFLQUIXNCWORAGZTEJHVDBKY'{~(p:>:i.26)i.[:|.@}.^:(2={.)q:
                              (p:>:i.26)                      first 26 primes after 2
                                        i.                    for which the indices is
                                                         q:   prime factors
                                            |.@}.             remove first and reverse
                                                 ^:           if
                                                   (2={.)     the first entry is 2
                            {~                                reverse index
'..........................'                                  hardcoded string

3

PHP, 173 ไบต์

for($i=2;1<$n=&$argn;$n%$i?++$i:$r[]=$i.!$n/=$i)for($t=$i;$i>2&!$w[$i]&&$i%--$t;$t>2?:$w[$i]=SPMFLQUIXNCWORAGZTEJHVDBKY[$p++]);$r[0]>2?:rsort($r);foreach($r as$s)echo$w[$s];

เวอร์ชั่นออนไลน์

ขยาย

for($i=2;1<$n=&$argn; # loop till input is 1
$n%$i?++$i:$r[]=$i.!$n/=$i) #after loop add value to result if input is divisible and divide input
  for($t=$i;$i>2&!$w[$i]&&$i%--$t; # loop if number is gt 2 and not in letter array till number is divisible 
  $t>2?:$w[$i]=SPMFLQUIXNCWORAGZTEJHVDBKY[$p++]) # if is prime add to letter array
  ; # make nothing in the loop
$r[0]>2?:rsort($r); # reverse result array if 2 is in result array
foreach($r as$s) # loop result array
  echo$w[$s]; # Output 

PHP, 178 ไบต์

for($z=2;$p<26;$t>1?:$w[$z]=SPMFLQUIXNCWORAGZTEJHVDBKY[$p++])for($t=++$z;$z%--$t;);for($i=2;1<$n=&$argn;)$n%$i?++$i:$r[]=$i.!$n/=$i;$r[0]>2?:rsort($r);foreach($r as$s)echo$w[$s];

เวอร์ชั่นออนไลน์

ขยาย

for($z=2;$p<26;
$t>1?:$w[$z]=SPMFLQUIXNCWORAGZTEJHVDBKY[$p++]) # after loop if is prime add to letter array
  for($t=++$z;$z%--$t;); 
for($i=2;1<$n=&$argn;)  # loop till input is 1
  $n%$i?++$i:$r[]=$i.!$n/=$i; #add value to result if input is divisible and divide input
$r[0]>2?:rsort($r); # reverse result array if 2 is in result array
foreach($r as$s) # loop result array
  echo$w[$s]; # Output 

1

Python ขนาด 1420 ไบต์

lambda x:(lambda a,b,e,k,l,m,q,p:len.__name__[:a].join(dict(zip((lambda n:(lambda n,f,g:f(n,e,[],f,g))(n,lambda n,i,r,f,g:g(n,i+b,r,f,g)if i<n else r,lambda n,i,r,f,g:f(n,i,[r,r+[i]][all(i%x!=a for x in[e]+r)],f,g)))(l*e*(k*l+b)),(lambda n,o,t:(lambda n,f,g:f(n, len.__name__[:a],f,g))(n,lambda n,s,f,g:g(n,s,f,g)if n>o else s,lambda n,s,f,g:f(n//t,s+chr(n%t),f,g)))((((((k<<e)-b)<<m)+m)<<((k<<q)+(k<<b)))+(((((k<<e)-b)<<e)+b)<<((k<<q)-(b<<b)))+((((((b<<k)+b))<<l)+b)<<((((k<<e)-b)<<l)+(b<<b)))+(((((k<<e)-b)<<l)-k)<<((m<<m)+p))-(((p<<m)-b)<<((m<<m)-(b<<b)))+(((m<<k)+b)<<((((m<<e)-b)<<k)-(b<<b)))+(((((k<<e)-b)<<l)-m)<<((((b<<l)+b)<<k)+k))-(((((b<<l)-b)<<l)-p)<<((b<<p)+(b<<b)))-(((p<<k)-b)<<((((b<<l)-b)<<k)+k))-(((k<<q)-b)<<((p<<l)))+(((m<<m)+m)<<((((k<<e)+b)<<k)-b))-(((k<<m)+b)<<((k<<m)-b))-(((m<<m)+k)<<((((k<<e)-b)<<k)-(b<<b)))+(((((k<<e)+b)<<e)+b)<<((m<<l)-(b<<e)))-(((((k<<e)+b)<<e)+b)<<((((b<<l)+b)<<e)-b))+((((((b<<k)+b))<<k)+b)<<((p<<k)))+(((((k<<e)-b)<<k)-k)<<((k<<l)))+(((m<<l)+b)<<((m<<k)))+(((m<<e)-b)<<((b<<m)+(b<<b)))+((((((b<<k)+b))<<e)-b)<<((k<<k)+b))+(((m<<k)-b)<<((b<<l)+b))-((((k<<e)-b))<<((k<<e)))+(((m<<e)+b)<<e)-b,b,b<<l*e)))[i]for i in(lambda x: [x.remove(e), x[::-b]][b] if e in x else x)((lambda x:(lambda x,g,h:g(x,b,[],g,h))(x,lambda x,n,r,g,h:h(x,n+b,r,g,h)if x>b else r,lambda x,n,r,g,h:h(x//n,n,r+[n],g,h)if x%n==a else g(x,n,r,g,h)))(x))))(*[x for x in range(True<<len(len.__name__))])

สิ่งนี้ทำได้โดยการย่อบางอย่าง แต่มันเป็นความพยายามของฉันในการแก้ปัญหาโดยไม่มีตัวเลขหรือตัวอักษรสตริง ผมทราบดีว่านี่เป็นปัญหารหัสกอล์ฟและนี้ไม่ว่าสั้น ๆ แต่อยากจะแบ่งปันแล้วไม่แน่ใจว่าถ้าแบ่งนี้กฎใด ๆ หรือไม่

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

นี่เป็นเวอร์ชั่นที่อ่านได้มากกว่านี้อีกเล็กน้อยโดยมีชื่อตัวแปรที่สมเหตุสมผลมากกว่า


มีพื้นที่อย่างน้อยหนึ่งที่สามารถลบได้
mbomb007

2
ยินดีต้อนรับสู่การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ! นี่คือการแข่งขันกอล์ฟรหัสดังนั้นวัตถุประสงค์ของคุณควรทำให้รหัสของคุณสั้นที่สุด ศูนย์ช่วยเหลือของเราระบุว่าการแก้ปัญหาทั้งหมดสำหรับความท้าทายควร [... ] เป็นคู่แข่งที่ร้ายแรงสำหรับเกณฑ์การชนะที่ใช้งาน [... ] การเข้าร่วมการแข่งขันกอล์ฟรหัสจำเป็นต้องได้รับการตีกอล์ฟ
Dennis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.