คู่หรือคี่: ผู้เล่นสามคน


15

มันเป็นเกมสามผู้เล่นเล่นด้วยมือเดียว

ในเวลาเดียวกันผู้เล่นแต่ละคนจะแสดงมือของเขาด้วยการขยาย 0 ถึง 5 นิ้ว

หากผู้เล่นทุกคนแสดงหมายเลขเดียวกัน (คู่หรือคี่) เหมือนกันจะไม่มีผู้ชนะ แต่อย่างอื่นผู้เล่นแสดงให้เห็นถึงความแตกต่างในการชนะสองครั้ง

 P l a y e r s
A      B      C       Winner

Even   Even   Even    No winner
Odd    Odd    Odd     No winner
Even   Odd    Odd     Player A
Odd    Even   Even    Player A
Even   Odd    Even    Player B
Odd    Even   Odd     Player B
Odd    Odd    Even    Player C
Even   Even   Odd     Player C

เครื่องมือที่ร้องขอสามารถใช้อาร์กิวเมนต์ (3 อาร์กิวเมนต์เป็นตัวเลขระหว่าง 0 ถึง 5) หรือ STDIN (3 ค่าต่อบรรทัดคั่นด้วยช่องว่าง)

ไม่จำเป็นต้องตรวจสอบอินพุต: อินพุตไม่สม่ำเสมอสามารถสร้างเอาต์พุตที่ไม่คาดคิดได้

ข้อโต้แย้งหรือค่าในบรรทัดจะได้รับจากซ้ายไปขวาจากผู้เล่นที่จะเล่น C

สัญญาณออกเท่านั้นต้องมีA, BหรือC(พิมพ์ใหญ่) หรือสตริงno one(ในกรณีที่ต่ำกว่าที่มีพื้นที่ปกติ)

เครื่องมืออาจทำงานได้เพียงครั้งเดียวหรือเป็นตัวกรองในทุกบรรทัดอินพุต

รหัสที่สั้นที่สุดชนะ


6
อาจจะน่าสนใจกว่าในฐานะ [king-of-the-hill] เล่นเกม
dmckee --- ผู้ดูแลอดีตลูกแมว

ฉันสงสัยว่าความจริงเรามี 5 นิ้ว (ดังนั้นจึงมี 3 คี่และ 2 นิ้วที่เป็นไปได้แม้จำนวนเท่ากัน) ส่งผลต่อกลยุทธ์การชนะ ...
Olivier Dulac

@OlivierDulac, 0 ยังเป็นเลขคู่
Peter Taylor

ในกฎของเกมนี้ใช่มันมีโอกาสเท่ากันสำหรับเลขคี่ (0 2 4 vs 1 3 5)
F. Hauri

@ PeterTaylor: ขอบคุณฉันอ่านคำถามผิด (และฉันไม่คิดว่ามันจะนับ)
Olivier Dulac

คำตอบ:


12

APL ( 34 30)

(1⍳⍨+/∘.=⍨2|⎕)⊃'ABC',⊂'no one'

คำอธิบาย:

  • 2|⎕: อ่านบรรทัดอินพุตรับ mod-2 ของแต่ละหมายเลข (ให้รายการคือ1 0 1)
  • ∘.=⍨: เปรียบเทียบแต่ละองค์ประกอบในเวกเตอร์กับแต่ละองค์ประกอบในเวกเตอร์โดยให้เมทริกซ์
  • +/: รวมแถวของเมทริกซ์โดยให้แต่ละองค์ประกอบมีจำนวนเท่ากัน ถ้ามีสองตัวที่เหมือนกันและอีกอันที่แตกต่างกันตอนนี้เรามีเวกเตอร์2 1 2ที่ซึ่ง1ซึกที่ต่าง 3 3 3หากพวกเขาเหมือนกันทั้งหมดที่เราได้รับ
  • 1⍳⍨: 1หาตำแหน่งของ หากไม่มีอยู่1นี่จะส่งคืนมากกว่าความยาวของเวกเตอร์หนึ่งรายการในกรณี4นี้
  • ⊃'ABC',⊂'no one': แสดงสตริงที่ดัชนีที่กำหนด

ดีใช้การเขียนโปรแกรมแบบอาเรย์เชิงในการคำนวณดัชนี
FireFly

8

Mathematica, 45 43 42 41 ตัวอักษร

f="no one"[A,B,C]〚Mod[Tr@#-#,2].{2,1,0}〛&

ตัวอย่าง:

f[{0 ,0, 0}]

ไม่มีใคร

f[{1, 3, 5}]

ไม่มีใคร

f[{2, 3, 5}]

A

f[{2, 3, 4}]

B


โซลูชันอื่นที่มี43 42 ตัวอักษร:

f=Mod[Tr@#-#-1,2].{A,B,C}/._+__->"no one"&


4

Befunge-98, 61 50 45 ตัวอักษร

&&&:11p+2%2*\11g+2%+:"@"+#@\#,_0"eno on">:#,_

ใช้การแสดงออกอันชาญฉลาดของ Fors ในการโกนหนวดออกไปอีกสองสามอักขระ ตอนนี้แบบบรรทัดเดียว (เช่นรองรับ Unefunge)! อ่านจนกระทั่งเกมชนะ เพิ่ม@ในตอนท้ายสำหรับโปรแกรม one-shot

ถือว่าอินพุต mod 2 เป็นเลขฐานสองเช่นเดียวกับคำตอบ JS ของฉันจากนั้นให้ค้นหา AC และกลับไปที่ 'ไม่มีใคร' ถ้าอยู่นอกขอบเขต (โดยการทดสอบว่าตัวละครเป็น '≥' 'ซึ่งช่วยให้ฉัน เพื่อใช้รหัสใกล้เคียงเป็นข้อมูล: D)

รูปแบบที่อ่านบรรทัดอินพุตสร้างเอาต์พุตอ่านบรรทัดอินพุตใหม่ ฯลฯ จนกว่าเกมจะถูกตัดสิน (เช่นไม่ใช่ 'ไม่มีใคร'):

&2%4*&2%2*&2%++1g:" "#@-#,_0"eno on">:#,_
 CBAABC


ฉันบอกสิ่งนี้กับปลาเพื่อหาคำตอบ ฉันสังเกตคุณ +1 btw
Cruncher

4

APL, 30

(1+2=/2|⎕)⊃'BA'('C',⊂'no one')

หากฉันได้รับอนุญาตให้เปลี่ยนตัวแปรของระบบโดยการตั้งค่าสามารถลบ 2 ตัวอักษรได้ (โดยเฉพาะการเปลี่ยนดัชนีต้นกำเนิด⎕IOเป็น 0)

บิตที่สำคัญ

หากเราเป็นตัวแทนของอัตราต่อรองทั้งหมดด้วยวิธีเดียวกันและทุกอย่างมีค่าเหมือนกันดังนั้นการดำเนินการความเท่าเทียมกันของคู่ที่ชาญฉลาดสามารถแยกแยะความแตกต่างได้ทั้ง 4 กรณี: 0 0สำหรับ B ชนะ0 1สำหรับ A ชนะและอื่น ๆ

คำอธิบาย

2|⎕รับอินพุตและ mod 2
2=/ความเท่าเทียมกันของคู่ที่ชาญฉลาด
1+เพิ่ม 1 สำหรับการจัดทำดัชนี (อาร์เรย์ APL เป็น 1 ตามค่าเริ่มต้น)

'BA'('C',⊂'no one')อาร์เรย์ที่ซ้อนกัน
เลือกองค์ประกอบที่ถูกต้องจากอาร์เรย์ที่ซ้อนกัน


3

C: 88 ตัวอักษร

น่าเสียดายที่ C เช่นเคยต้องการขยะที่ไม่จำเป็นจำนวนมาก แต่ถึงกระนั้นในภาษาอื่นที่สามารถเขียนได้=**++b+**(++และมันหมายถึงอะไรบางอย่าง? ค่อนข้างประเสริฐ

main(int a,char**b){(a=**++b+**(++b+1)&1|2*(**b+**++b&1))?putchar(a+64):puts("no one");}

เพียงแค่ผ่านสามตัวเลขเป็นข้อโต้แย้งและทำ!


มีการระบุลำดับที่แม่นยำของคำนำหน้าเหล่านั้นหรือไม่ ฉันคิดว่ามันไม่ใช่ ... แม้ว่าคุณสามารถแทนที่พวกเขาด้วย*b[1]ฯลฯ เพื่อไม่แตกต่างกันขนาด (แม้ว่าการสูญเสียบางอย่างในความสง่างาม .. :()
FireFly

ใน Ruby:: s = "=**++b+**(++"P ในความจริงจังทั้งหมดว้าวมันเป็นยังไง ... มันใช้งานยังไง : O
Doorknob

@Doorknob มันฉลาดมาก แต่ถ้าคุณแทนที่ dereferencing และ preincrements ด้วยการทำดัชนีbแทนและพิมพ์เงื่อนไขบางอย่างคุณควรจะสามารถเข้าใจมันได้ : D (ปากกาและกระดาษช่วยด้วยสำหรับตารางความจริงที่เกิดขึ้น)
FireFly

3

GolfScript (31 ตัวอักษร)

~]{1&}%.$1=!?)'no one
A
B
C'n/=

ตรรกะอย่างง่าย: ลดโมดูโลอินพุต 2 จากนั้นเรียงลำดับสำเนา รายการกลางของอาร์เรย์ที่เรียงลำดับอยู่ในส่วนใหญ่ดังนั้นให้มองหาดัชนีที่แตกต่างกัน


3

Ruby (ฟังก์ชันร่างกาย) 42 chars

สมมติว่า 3 ข้อโต้แย้งตัวเลขa, bและc:

['zCBAABCz'[a%2*4|b%2*2|c%2],'no one'].min

Ruby (เครื่องมือบรรทัดคำสั่ง), 61 ตัวอักษร

เวอร์ชัน 1 มี 62 ตัวอักษร:

$><<["zCBAABCz"[$*.reduce(0){|i,n|i*2|n.to_i%2}],'no one'].min

แต่ด้วยการตอบคำถามของดาร์เรนสโตนโดยการย้อนกลับของเวอร์ชัน 2 ลงไปที่ 61 ตัวอักษร:

i=0;$*.map{|n|i+=i+n.to_i%2};$><<['zCBAABCz'[i],'no one'].min


2

JavaScript (โหนด), 87 ตัวอักษร

p=process.argv;console.log("ABC"[3-Math.min(x=p[2]%2*4+p[3]%2*2+p[4]%2,7-x)]||"no one")

ในการรับลูกบอลกลิ้ง ... คาดว่าอินพุตเป็นข้อโต้แย้งพิเศษสามข้อ ใช้รูปแบบต่อไปนี้สำหรับอินพุต / เอาต์พุต ( /แทน "no-one"):

  A B C  res  #
 ───────────────
  0 0 0   /   0
  0 0 1   C   1
  0 1 0   B   2
  0 1 1   A   3
  1 0 0   A   4
  1 0 1   B   5
  1 1 0   C   6
  1 1 1   /   7


2

Perl, 84 ตัวอักษร

$x=oct"0b".join"",map{$_%2}<>=~/(\d)/g;print"",('no one','C','B','A')[$x>=4?7-$x:$x]
  • <>=~/(\d)/g แยกวิเคราะห์บรรทัดอินพุตเป็นตัวเลขที่แตกต่างกัน
  • map{$_%2 ใช้รายการนี้และคำนวณค่า mod 2 (คู่หรือคี่)
  • oct"0b".join"", ใช้รายการของค่า mod นี้รวมไว้ในสตริงผนวกตัวระบุแปดด้านและแปลงสตริงเป็นตัวเลข

$x == 4โดยทั่วไปสิ่งที่ผมทำก็คือการสร้างตารางความจริงแล้วจัดลำดับใหม่อย่างระมัดระวังมันดังนั้นฉันมีการดำเนินงานรอบผกผัน ดังนั้นถ้า$x >=4เราทำสิ่งที่ตรงกันข้าม[$x>=4?7-$x:$x]ที่เราเคยทำดัชนีลงในอาร์เรย์('no one','C','B','A')

มันไม่ใช่รหัสที่สั้นที่สุด แต่จริง ๆ แล้วไม่ใช่เสียงรบกวนของสาย ... ซึ่งน่าทึ่งในตัวของมันเอง

Perl: 74 ตัวอักษร + 3 ธง = 77, รันด้วย perl -anE '(code)'

s/(\d)\s*/$1%2/eg;$x=oct"0b".$_;say"",("no one","C","B","A")[$x>3?7-$x:$x]

นี่คือการปรับปรุงโดยใช้ประโยชน์จาก autosplit (-a), พูด (-E) และในที่สุดก็หาสิ่งที่ผิดกับการเปรียบเทียบ


ทำไม>=4แทนที่จะ>3? +1 สำหรับเคล็ดลับที่'0b'.ฉันไม่เคยรู้จักมาก่อน
F. Hauri

ฉันลองทั้งสองอย่างในดีบักเกอร์ (> 3 และ> = 4) และฉันไม่แน่ใจว่าทำไม แต่> = 4 ทำงานได้ แต่> 3 ไม่ได้ ฉันไม่สามารถอธิบายได้ (อาจดีบัก borked?) เพื่อความพึงพอใจของฉันเอง
Joe

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

2

เสียงกระเพื่อมสามัญ114 106 70 ตัวอักษร

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

(defun f(a b c)(elt'(no_one c a b)(+(mod(- b c)2)(*(mod(- a b)2)2)))))

อัลกอริทึมเก่ากว่า:

(defun f(h)(let*((o(mapcar #'oddp h))(p(position 1(mapcar(lambda(x)(count x o))o))))(if p(elt'(a b c)p)"no one")))


1

Mathematica 100 94 89

f=If[(t=Tally[b=Boole@OddQ@#][[-1,2]])==1,{"A","B","C"}[[Position[b,t][[-1,1]]]],"no one"]&

การทดสอบ

f[{5, 3, 1}]
f[{2, 0, 4}]
f[{0, 1, 2}]
f[{0, 1, 3}]
f[{1, 3, 0}]

"ไม่มีใคร"
"ไม่มีใคร"
"B"
"A"
"C"



1

R 67

z="no one";c("A","B","C",z,z)[match(2-sum(x<-scan()%%2),c(x,2,-1))]

! ที่น่าสนใจ ฉันจะทดสอบสิ่งนี้ได้อย่างไร ฉันต้องทำงานอะไร (อาจเป็น shebang?)
F. Hauri

คุณจะต้องเริ่มเซสชัน R แบบโต้ตอบ (เช่น/usr/bin/R) จากนั้นป้อนรหัสด้านบน scan()เป็นสิ่งที่จะให้คุณใส่: ตัวอย่างจะพิมพ์1[space]3[space]5[space][enter][enter]และคุณจะเห็นผลลัพธ์ที่สอดคล้องกัน (ที่นี่no one) พิมพ์ไปที่หน้าจอ คุณสามารถดาวน์โหลด R ได้ที่นี่: cran.r-project.org/mirrors.html
flodel

1

C, 85 ตัวอักษร

main(int j,char**p){puts("C\0A\0B\0no one"+((**++p&1)*2+(**++p&1)^(**++p&1?0:3))*2);}

ไม่สั้นเท่ากับคำตอบ Ruby ของฉัน แต่ฉันมีความสุขกับมันพิจารณาmaincruft


1

ปลา - 41

:&+2%2*$&+2%+:"@"+!;$!o :?#"eno on"!;ooo<

คำตอบ befunge ของ Stole FireFly และส่งไปหาปลาเพราะการใช้รีจิสเตอร์ในปลาทำให้เราสามารถกำจัดตัวละคร สูญเสียอักขระสองสามตัวที่ไม่มีแนวนอนหากตัวดำเนินการ

สิ่งนี้ใช้พารามิเตอร์ผ่านการขัดแย้ง

python fish.py evenodd.fish -v 2 2 2  
no one
python fish.py evenodd.fish -v 2 3 2  
B
python fish.py evenodd.fish -v 2 3 3  
A
python fish.py evenodd.fish -v 3 3 4  
C

Ooooooooooo ดีมาก!
F. Hauri

หืมปลา คุณมีแทรมโพลีนหรือไม่? ถ้าเป็นเช่นนั้นคุณอาจใช้ (เทียบเท่า) #@...<ในตอนท้ายเพื่อบันทึกตัวอักษร โอ้และรหัสปัจจุบันของคุณดูเหมือนว่า 42 ตัวอักษรให้ฉันดังนั้นการลดจำนวนของคุณ :)
FireFly

@FireFly ขอบคุณ! นั่นช่วยประหยัดถ่านและคุณพูดถูกฉันถูกนับมากกว่าหนึ่งคน เครื่องมือแก้ไขข้อความของฉันพูดว่า "col 43" ในตอนท้าย แต่แน่นอนว่าเคอร์เซอร์บนบรรทัดว่างบอกว่า "col 1"
Cruncher


1

JavaScript (ES6) / CoffeeScript, 50 ไบต์

ใช้ตารางความจริงตามคำตอบของ Fireflyแต่ใช้แนวทางที่ตรงกว่าในการเข้าถึงตัวละคร:

f=(a,b,c)=>'CBAABC'[(a%2*4+b%2*2+c%2)-1]||'no one' // JavaScript
f=(a,b,c)->'CBAABC'[(a%2*4+b%2*2+c%2)-1]||'no one'  # CoffeeScript

การสาธิต

// Translated into ES5 for browser compatibility
f=function(a,b,c){return'CBAABC'[(a%2*4+b%2*2+c%2)-1]||'no one'}

//f=(a,b,c)=>'CBAABC'[(a%2*4+b%2*2+c%2)-1]||'no one'

for(i=6;i--;)
  for(j=6;j--;)
    for(k=6;k--;)
      O.innerHTML += i + ', ' + j + ', ' + k + ' => ' + f(i,j,k) + "\n"
<pre id=O></pre>




0

วิธีการที่แตกต่างกันสองวิธีในสองภาษา + รูปแบบที่แตกต่างกัน -> 6 คำตอบ

การดำเนินการนี้มี 2 วิธี:

  • array based: สร้างเลขฐานสองจำนวน 3 หลักมากกว่ารับสายจากอาเรย์
  • count ขึ้นอยู่กับ: นับจำนวนและคี่และดูว่ามี count == 1

Perl 71 (อาเรย์ที่ใช้ + ชุดรูปแบบ)

s/(.)\s*/$1&1/eg;$==oct"0b".$_;$==$=>3?7-$=:$=;say$=?chr 68-$=:"no one"

หนึ่งในperl ที่สั้นที่สุดของฉัน :

  • s/(.)\s*/$1&1/eg;แปลงสตริงเหมือน1 2 3เป็น101
  • $==oct"0b".$_; แปลงเลขฐานสองเป็นตุลาคม (เหมือนกับธันวาคม, ต่ำกว่า 8)
  • $==$=>3?7-$=:$=;ถ้า> 3โอเปอเร7-เตอร์ (จากนั้นno one== 0)
  • say$=?chr 68-$=:"no one"หากไม่ได้พิมพ์ถ่านจากมูลค่าอื่นพิมพ์0no one

Perl 71 (ตามอาร์เรย์)

s/(.)\s*/$1&1/eg;$==oct"0b".$_;say@{["no one",qw{A B C}]}[$=>3?7-$=:$=]

แตกต่างกันเล็กน้อยในขั้นตอนการพิมพ์: ผลลัพธ์จะขึ้นอยู่กับ'อาร์เรย์' 'อาเรย์'

Perl 81 (นับตาม)

$c=A;map{$a[$_%2]=$c++;$b[$_%2]++}split;say$b[0]==1?$a[0]:$b[0]==2?$a[1]:"no one"

ความหมายที่แตกต่าง:

  • $c=A initialise เคาน์เตอร์Aด้วย
  • map{$a[$_%2]=$c++;$b[$_%2]++}splitเคาน์เตอร์นับแม้แต่และแปลกร้านเท่านั้นที่หนึ่ง
  • say$b[0]==1?$a[0]: ถ้าแม้เคาน์เตอร์ == 1? ยังพิมพ์แม้กระทั่งเครื่องเล่น
  • $b[0]==2?$a[1]:ถ้าแม้เคาน์เตอร์ == 2? ยังพิมพ์ผู้เล่นที่แปลก
  • :"no one"no oneพิมพ์อื่น

Bash 85 (ตามอาร์เรย์)

c=$((($1%2)<<2|($2&1)*2+($3%2)));((c>3))&&c=$((7-c));o=("no one" C B A);echo ${o[c]}

สิ่งนี้อิงจากเวอร์ชัน perl ที่สองของฉัน:

  • c=$((($1%2)<<2|($2&1)*2+($3%2))) ทำให้ดัชนี pos
    • $ 1% 2 แปลง ARG แรกในไบนารีโดยใช้ mod
    • $ 2 & 1 แปลง ARG ที่สองเป็นเลขฐานสองโดยใช้ and
    • << 2 shift-to-the-leftเหมือนกัน*4
    • * 2 คูณด้วย 2<<1เป็นเดียวกันกว่า
  • ((c>3))&&c=$((7-c)) ถ้า c> = 4 ดังนั้น c = 7-c
  • o=() ประกาศอาร์เรย์
  • echo ${o[c]} ขึ้นอยู่กับอาร์เรย์

Bash 133 (นับตาม)

a[$1&1]=A;a[$2&1]=B;a[$3&1]=C;((b[$1&1]++));((b[$2&1]++));((b[$3&1]++))
case $b in 1)echo ${a[0]};;2)echo ${a[1]};;*)echo no one;esac
  • a[$1&1]=A;a[$2&1]=B;a[$3&1]=Cจัดเก็บผู้เล่นไว้ในตัวแปร[คู่]และ[คี่]
  • ((b[$1&1]++));((b[$2&1]++));((b[$3&1]++))นับคู่ / คี่เป็น b
  • case $b in 1) echo ${a[0]} ในกรณีที่แม้แต่เคาน์เตอร์ == 1 พิมพ์ผู้เล่นแม้กระทั่ง
  • 2)echo ${a[1]};; กรณีแม้กระทั่งเคาน์เตอร์ == 2 พิมพ์ผู้เล่นที่แปลก
  • *)echo no one;esacno oneพิมพ์อื่น

Bash 133 (นับตาม)

a[$1&1]=A;a[$2&1]=B;a[$3&1]=C;((b[$1&1]++));((b[$2&1]++));((b[$3&1]++))
((b==1))&&echo ${a[0]}||(((b==2))&&echo ${a[1]}||echo no one)

รุ่นเดียวกันโดยใช้เงื่อนไขของ bash และกลุ่มคำสั่งแทน case ... esac


0

ภาษาของ Game Maker, 116

คำตอบใหม่ของฉันขึ้นอยู่กับสูตรของ FireFly:

a[1]="no one"a[2]='A'a[3]='B'a[4]='C'return a[(3-min(b=argument0 mod 2*4+argument1 mod 2*2+argument2 mod 2,7-b)||1)]

เก่ารหัสเรียบเรียงด้วยตัวแปรเตรียมเป็น 0, 183ตัวอักษร:

a=argument0 mod 2b=argument1 mod 2c=argument2 mod 2if((a&&b&&c)||(!a&&!b&&!c))return "no one" else{if((a&&b)||(!a&&!b))return "C" else{if((a&&c)||(!a&&!c))return "B" else return "A"}}

แก้ไข # 1 - รหัสอื่นทั้งหมด


ที่น่าสนใจ !? ฉันไม่เคยรู้จักภาษานี้มาก่อน! แต่เนื่องจากภาษานี้อนุญาตให้ใช้อาเรย์รหัสนี้จึงดูเหมือนจะไม่ได้น้อยที่สุดสำหรับงานนี้
F. Hauri

@ F.Hauri ใช่ฉันพยายามใช้อาร์เรย์เพื่อให้สั้นลง
Timtech


0

vba, 116

Function z(q,r,s)
a="A":b="B":c="C":d="no one"
z=Array(d,c,b,a,a,b,c,d)((q And 1)*4+(r And 1)*2+(s And 1))
End Function

เรียกใช้?z(1,2,3)หรือกำหนดให้กับตัวแปรด้วยq=z(1,2,3)หรือใช้เป็น UDF ภายใน excel และใช้=z(1,2,3)ในสูตร excel ของคุณ


0

Python 3, 80 ตัวอักษร

r=int(input().replace(' ',''),2)
print(['no one','C','B','A'][7-r if r>3 else r])

หมายเหตุ: อินพุตต้องเป็น '1' [คี่] หรือ '0' [คู่] ตัวอย่างเช่น:

> 1 1 0
C
> 1 1 1
no one

ความท้าทายต้องการอินพุตที่จะ "คั่นด้วยช่องว่าง" อาจมีวิธีในการเล่นกอล์ฟได้อย่างมีประสิทธิภาพsplitและjoinเพื่อให้คุณยังคงสามารถใช้int(...input...)ความคิด(ฉลาดมาก) ของคุณ ?
Darren Stone

คุณสามารถลบสิ่งที่'0b'+ฉันคิดว่าอย่างน้อยมันก็ดูเหมือนว่าจะซ้ำซ้อนกับฉันและint(input(),2)ดูเหมือนว่าจะทำงานใน REPL
FireFly

@DarrenStone ฉันใช้การแทนที่สตริงแทนดูการแก้ไข
ธากา

@FireFly ขอบคุณคุณพูดถูกฉันได้แก้ไขคำตอบแล้ว ฉันแรกทดสอบรหัสด้วย Python 2 ที่ต้องการ '0b'
ธารา

ความท้าทายยังต้องมีการป้อนข้อมูลเพื่อรับตัวเลขตั้งแต่ 0 ถึง 5
Peter Taylor

0

Java, 226 ตัวอักษร

void func(int a, int b, int c){
    a = a%2;
    b = b%2;
    c = c%2;
    String out = "B";
    if((a+b+c)==0 || (a+b+c)==3)
        out = "no one";
    else if(a==b)
        out = "C";
    else if(b==c)
        out = "A";
    System.out.println(out);
}

0

101 96

C อาจเป็นตัวอย่างที่น่ารำคาญที่สุด (การดำเนินการบางประการ):

main(int v,char** c){(v=c[1]==c[2]?c[1]==c[3]?0:3:c[1]==c[3]?2:1)?puts("no one"):putchar(v+64);}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.