ตัวอักษรพอดีกับด้านอื่น ๆ หรือไม่?


23

คุณจำสีของฉันถูกจัดกลุ่มตามสีได้หรือไม่?

เสื่อของฉันถูกจัดกลุ่มตามสีอย่างเหมาะสม

เมื่อวานนี้ฉันมองดูและตระหนักว่าตัวอักษรบางตัวเหมาะสมกับคนอื่น ตัวอย่าง: จดหมายPเหมาะกับสถานที่ที่จดหมายRไป ดังนั้นนี่เป็นความท้าทายที่เรียบง่าย: ให้ตัวอักษรสองตัวคืนค่าความจริงถ้าตัวอักษรตัวใดตัวหนึ่งเข้าด้านใน (อีกทางตรงหรือหมุน แต่ไม่พลิก) หรือค่าความผิดถ้าพวกเขาทำไม่ได้ นั่นคือถ้าการป้อนข้อมูลเป็น[P,R]หรือ[R,P]คุณจะต้องกลับมาจริงเพราะในทั้งสองกรณีตัวอักษรตัวหนึ่งพอดีภายในอื่น ๆ หากคุณได้รับ[L,U]คุณจะต้องกลับมาโกหกเพราะไม่เหมาะสมกับคนอื่น

กฎระเบียบ

  • อินพุตจะต้องเป็นตัวอักษรและตัวเลขสองตัวในช่วง [0-9A-Z] เนื่องจากมีตัวเลขอยู่ในแผ่นในรูปแบบใด ๆ ที่คุณต้องการ (สองตัวแยกสองตัวแยกเป็นสองอินพุตรายการที่มีสองตัวอักษรสตริงที่มี 2 ตัวอักษรอะไรก็ตาม)
  • ผลลัพธ์จะต้องสอดคล้องกัน (ค่าความจริงและความเท็จจะต้องเหมือนกันเสมอ)
  • ต่อไปนี้เป็นตารางของอุปกรณ์ (โปรดทราบว่าตัวอักษรที่เหมาะสมในสถานที่ที่เหมาะสมเสมอในกรณีที่คุณได้รับสิ่งที่ชอบ[Y,Y]เป็นอินพุต):

    char fits inside chars
    --------------------------------------------------------
       C             G,O
       F             B,E,P,R
       G             O
       I             0,1,7,B,D,E,F,H,K,L,M,N,O,P,R,T,V,W,X,Z
       L             E
       M             W
       P             R
       S             O
       V             A
       W             M
       0             O
       1             B,E,L
       3             O
       6             9,O
       8             O
       9             6,O
    

ฉันสาบานอย่างจริงจังว่าฉันได้ทดสอบข้อต่อทุกข้อในพรมเด็กของฉัน (เหงื่อแห้งจากหน้าผาก)

นี่คือดังนั้นอาจเป็นรหัสที่สั้นที่สุดสำหรับแต่ละภาษาที่ชนะ!

บางกรณีทดสอบ

input  output
-------------
[C,G]  truthy (C fits inside G)
[G,C]  truthy (C fits inside G)
[F,R]  truthy (F fits inside R)
[M,W]  truthy (both fit inside the other)
[O,S]  truthy (S fits inside O)
[T,T]  truthy (T fits in its place)
[E,V]  falsey (no fit found)
[P,L]  falsey

โพสต์ Sandbox โปรดยกโทษให้ฉันถ้าคุณเห็นอุปกรณ์เสริมที่ฉันพลาด ขอบคุณมากที่Οurousช่วยฉันกับรายการอุปกรณ์



1
1ไม่เหมาะสมในF?
user202729

@ user202729 ไม่เพราะคุณต้องพลิก1เพื่อให้พอดีกับในFแต่นั่นไม่ได้รับอนุญาตในเสื่อของฉัน :-)
Charlie


1
@ Οururเป็นคำถามอื่นเมื่อมีคำตอบสองข้อแล้ว ... นอกจากนี้ความท้าทายมีหลายกรณีที่ต้องทำการทดสอบอีกกรณีจะไม่เพิ่มอะไรอีกเลย (ฉันคิดว่าส่วนที่สร้างสรรค์ที่สุดคือทั้งสองอินพุตนั้น เปลี่ยนได้เนื่องจากคุณต้องตรวจสอบอุปกรณ์ทั้งสอง)
Charlie

คำตอบ:






2

จาวาสคริ 155 153 151 149 bytes

ฉันคิดว่าวิธีนี้ใช้ได้กับทุกกรณี 1/0 สำหรับจริง / เท็จ

(c,f,q=1)=>"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,`.some((v=>v[0]==c&v.includes(f)))|c==f|(q?F(f,c,0):0)

คำอธิบาย:

F=(
c, // input 1
f, // input 2
q=1 // variable used to execute F twice
)=>(
"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,` 
                              // array of strings where [0] is input 1 and [>0] are the fittings
.some(                        // any element of the array meets:
(v=>v[0]==c&v.includes(f)))|  // input 1 equals [0] and input 2  exists in the lookup string OR
c==f|                         // input 1 equals input 2 OR
(q?F(f,c,0):0)                // input 2 fits inside input 1

let F=(c,f,q=1)=>"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,`.some((v=>v[0]==c&v.includes(f)))|c==f|(q?F(f,c,0):0);
let tests = [
  ["C","G"],  //truthy (C fits inside G)
  ["G","C"],  //truthy (C fits inside G)
  ["F","R"],  //truthy (F fits inside R)
  ["M","W"],  //truthy (both fit inside the other)
  ["O","S"],  //truthy (S fits inside O)
  ["T","T"],  //truthy (T fits in its place)
  ["E","V"],  //falsey (no fit found)
  ["P","L"]   //falsey
];
tests.forEach((v)=>{console.log("F('"+v[0]+"','"+v[1]+"') = " + F(v[0],v[1]))});

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

  • บันทึก 2 ไบต์ขอบคุณ kamoroso94
  • บันทึก 2 ไบต์ด้วย Chris M
  • บันทึก 2 ไบต์โดยเปลี่ยนวิธีการค้นหาเป็น. some ()

นี้ไม่ได้กลับจริงถ้าcพอดีfหรือfพอดีc? ดูเหมือนว่าคุณจะตรวจสอบเพียงกรณีเดียว
Charlie

แก้ไขรหัสเพื่อส่งคืนจริงถ้าfพอดีc
Brian H.

ฉันอธิบายไม่ดีเกินไปหากใครต้องการทำให้ชัดเจนยิ่งขึ้นเพื่อแนะนำการแก้ไข
Brian H.

คุณสามารถใช้includes(f)แทนindexOf(f)>=0การบันทึก 2 ไบต์
kamoroso94

ยอดเยี่ยมไม่รู้ด้วยซ้ำว่าเป็นเรื่อง: D
Brian H.

1

Julia 0.6 , 139 bytes

(a,b)->(a==b)|any(map(x->all(in.((a,b),x))|all(in.((b,a),x)),zip("OCFILMPV16",split("CGS0368 G BEPR 017BDEFHKLMNOPRTVWXZ E W R A BEL 9"))))

ลองออนไลน์!

บันทึกบางไบต์ด้วยการจัดกลุ่มตัวอักษรที่พอดีกับ 'O' แต่การทดสอบอินพุตที่กลับใช้รหัสมากเกินไป ...

คำอธิบาย:

  • zip(☐) ซิปตัวอักษรเดียวที่สอดคล้องกันจาก "OCFILMPV16" & สตริงของตัวอักษรที่ตรงกัน
  • .in(☐) มีการใช้องค์ประกอบตามลำดับเช่น (in(a,'O'),in(b,"OCFILMPV16"))
  • all(.in(☐)) ต้องพบทั้ง ...
  • |สำหรับa,bหรือb,a...
  • any(map(☐)) สำหรับองค์ประกอบอย่างน้อยหนึ่งรายการในรายการซิป

1

Kotlin , 147 139 ไบต์

fun p(s:String)=setOf(s,s.reversed()).any{it.matches(Regex("(.)\\1|F[BEPR]|I[017BDEFHKLMNOPRTVWXZ]|1[BEL]|69|CG|LE|MW|PR|VA|O[CG69038S]"))}

ลองออนไลน์!

ตัวอย่างบนTry It Onlineมีกรณีทดสอบสำหรับชุดค่าผสมที่เป็นบวกทุกชุด

ฉันไม่ได้เพิ่มประสิทธิภาพ reg.ex มากเกินไปดังนั้นอาจยาวเกินความจำเป็น

แก้ไข:บันทึกไม่กี่ไบต์ใน reg.ex


1

C (gcc) , 211 ไบต์

ความพยายามครั้งแรก ตรงไปตรงมามาก

i;char*c="CFGILMPSVW013689",*x[]={"GO","BEPR","O","017BDEFHKLMNOPRTVWXZ","E","W","R","O","A","M","O","BEL","O","9O","O","6O"};h(a,b){return(i=strchr(c,a)-c)>=0&&strchr(x[i],b);}f(a,b){return a==b|h(a,b)|h(b,a);}

ลองออนไลน์!


0

PHP , 204 ไบต์

-147 ไบต์เพราะฉันกลับไปลบ 2 ไบต์เพียงเพื่อจะพบว่ารหัสของฉันมีข้อบกพร่องเล็กน้อยและตัวแปรที่ไม่ได้ใช้! รหัสของฉันสั้นลงมาก

<?php $a=fgets(STDIN);for($w=0;$w<2;$w++){if(strpos(explode(',','GO,BEPR,O,017BDEFHKLMNOPRTVWXZ,E,W,R,O,A,M,O,BEL,O,9O,O,6O')[strpos(CFGILMPSVW013689,$a[0])],$a[1])!==false){echo"t";break;}$a=strrev($a);}

ลองออนไลน์!


0

ทับทิม 140 ไบต์

->c,t{x='CFGILMPSVW013689'.chars.zip('GO BEPR O 017BDEFHKLMNOPRTVWXZ E W R O A M O BEL O 9O O 6O'.split).to_h;p x.key?(c)&&x[c].include?(t)}

ค่อนข้างเหมือนกันกับคำตอบของ python 3 แต่มีการประมวลผลที่แตกต่างกัน

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