อีกสามหมายเลข
ให้สามตัวเลขที่แตกต่างจาก\$1\$ถึง\$7\$ส่งออกตัวเลขที่แตกต่างกันสามตัวจาก\$1\$ถึง\$7\$นั่นคือไม่มีตัวเลขที่เหมือนกันกับตัวเลขเดิม รหัสของคุณต้องสร้างชุดเอาต์พุตที่แตกต่างกันสำหรับชุดอินพุตที่เป็นไปได้แต่ละชุด นั่นคือไม่มีอินพุตสองตัวที่สามารถสร้างเอาต์พุตเดียวกันได้โดยถือว่าทั้งสองเป็นชุดที่ไม่ได้เรียงลำดับ นอกเหนือจากนั้นคุณสามารถใช้การแมปอะไรก็ได้ที่คุณต้องการ
ในทางคณิตศาสตร์มากขึ้นคุณจะถูกขอให้ระบุ bijection (ฟังก์ชันหนึ่งต่อหนึ่ง) \$f:S \to S\$ที่ไหน\$S\$ประกอบด้วยชุดย่อยสามองค์ประกอบของ\$\{1,2,3,4,5,6,7\}\$เช่นนั้น\$f(s) \cap s = \emptyset\$สำหรับทุกๆ\$s\in S\$. ในฐานะที่เป็น bijection การแมปนี้จะต้องกลับด้านได้แม้ว่าคุณจะไม่ต้องระบุฟังก์ชันผกผันในโค้ดของคุณก็ตาม
นี่คือ 35 triples ที่เป็นไปได้ (เขียนเว้นวรรค )
I / O
รูปแบบของชุดองค์ประกอบทั้งสามมีความยืดหยุ่น คุณสามารถรับอินพุตตามลำดับที่จัดเรียงเป็นตัวเลขสามตัวหรือรายการสามองค์ประกอบ / อาร์เรย์ / ทูเพิลหรือเป็นชุด อย่างไรก็ตามคุณอาจไม่ต้องการอินพุตที่สั่งซื้อในลำดับที่เจาะจงนอกเหนือจากการจัดเรียง คุณอาจเป็นศูนย์ดัชนี
คุณยังสามารถใช้ลำดับของเจ็ดบิตที่สามอยู่ ลำดับเจ็ดบิตนี้สามารถแสดงเป็นตัวเลขทศนิยมไบต์หรืออักขระ
สามารถกำหนดเอาต์พุตในรูปแบบใดก็ได้เหล่านี้โดยค่าเผื่อเพิ่มเติมที่ไม่ต้องเรียงลำดับเอาต์พุต
คำตอบ
Python 3 , 53 ไบต์
def f(b):c=[*{*range(7)}-b];del c[-sum(b)%4];return c
ลองออนไลน์!
-3 ไบต์ขอบคุณ FryAmTheEggman
-4 ไบต์โดยศูนย์ดัชนี
-1 ไบต์ขอบคุณ xnor
Python 3 , 43 ไบต์
lambda s:([*{*range(7)}-s]*4)[-sum(s):][:3]
ลองออนไลน์!
เจลลี่ , 9 8 7 ไบต์
7RṚḟṙSḊ
monadic Link ยอมรับรายการตัวเลขสามตัวจาก\$[1,7]\$ตามลำดับที่ให้รายการตัวเลขอื่น ๆ จาก\$[1,7]\$ไม่จำเป็นต้องเรียงลำดับ
ลองออนไลน์! หรือดูทั้งหมด 35 (ฉันเรียงลำดับค่าผลลัพธ์เพื่อการเปรียบเทียบที่ง่ายขึ้น)
อย่างไร?
7RṚḟṙSḊ - Link: list A e.g. [2,4,7]
7R - seven range [1,2,3,4,5,6,7]
Ṛ - reverse [7,6,5,4,3,2,1]
ḟ - filter discard (A) -> B [6,5,3,1]
S - sum (A) 13
ṙ - rotate (B) left by (that) [5,3,1,6]
Ḋ - remove the leftmost [3,1,6]
R , 33 31 ไบต์
แก้ไข: -2 ไบต์โดยใช้โมดูโล-4(ซึ่งส่งคืนค่าลบของโมดูโล4)
(1:7)[v<--scan()][sum(v)%%-4-1]
ลองออนไลน์!
ค้นหาตัวเลข 4 หลักใน 1..7 ที่ไม่ได้อยู่ในอินพุตและไม่รวมตัวเลขที่ตรงกับผลรวมอินพุต (การพันรอบ)
การทดสอบลิงก์ TIO ที่เอาต์พุตไม่ซ้ำกันสำหรับแต่ละอินพุตและแสดงเอาต์พุตสำหรับทุกอินพุต
(1:7) # vector of digits 1..7
[ ] # select elements
-scan() # excluding (negative indexes) input
v<- # and define v as (negative) input
# (so up to here we have the 4 elements that aren't in the input)
[ ] # from these, select elements
- # excluding (negative index)
(sum(v)%%4+1) # the sum of input, modulo 4, plus 1
Japt , 14 ไบต์
ตามที่โฆษณาไว้ก่อนหน้านี้ฉันเป็นคนขี้เหนียวเล็กน้อยดังนั้นสิ่งนี้อาจผิดพลาดได้และแม้ว่าจะถูกต้องก็อาจจะตีกอล์ฟได้เล็กน้อย
7õ kU k϶UxÍu4
ลองหรือดู (สิ่งที่ฉันคิดว่าเป็น) การพิสูจน์
ถ่าน , 39 38 34 32 ไบต์
NθI⁻¹²⁷⁺θX²⊟Φ⁷№ETXdhp﹪×℅λX²ι¹²⁷θ
ลองออนไลน์! ลิงก์คือรหัสเวอร์ชันที่ละเอียด I / O 7..112เป็นจำนวนเต็ม คำอธิบาย: เลขของสตริงมีรูปแบบห้าบิตซึ่งเราได้เลือกโดยพลการที่จะเป็นเช่นนั้นไม่รวมผลTXdhp 1จากนั้นจะหมุนเป็นวัฏจักรจนกว่าจะตรงกับอินพุตซึ่ง ณ จุดนั้นฉันได้กำหนดบิตที่ยกเว้น จากนั้นบิตนี้จะถูกเพิ่มลงในอินพุตต้นฉบับและในที่สุดความแตกต่างระหว่าง127และผลรวมจะถูกพิมพ์ออกมา
Nθ Cast input to integer
⁷ Literal 7
Φ Filter on implicit range
TXdhp Literal string `TXdhp`
E Map over characters
λ Current character
℅ Ordinal
× Multiplied by
² Literal 2
X Raised to power
ι Outer index
﹪ Modulo
¹²⁷ Literal 127
№ Count (i.e. contains)
θ Input
⊟ Pop matching value
² Literal 2
X Raised to that power
⁺ Added to
θ Input
⁻ Subtracted from
¹²⁷ Literal 127
I Cast to string
Implicitly print
ฉันเลือกรูปแบบห้าบิตต่อไปนี้โดยพลการเพื่อยกเว้น1แต่รูปแบบที่แตกต่างกันห้าแบบใด ๆ ก็ตามจะใช้ได้
T 1010100
X 1011000
d 1100100
h 1101000
p 1110000
JavaScript (ES6), 66 65 ไบต์
รับอินพุตเป็นสตริง 3 หลัก ส่งคืนสตริงในรูปแบบเดียวกัน
f=(n,k=i=0)=>++k<8?(~n.search(k)||n*43%399%4==i++?'':k)+f(n,k):''
ลองออนไลน์!
05AB1E , 10 ไบต์
7LsKsO(._¨
ลองออนไลน์!
อย่างไร?
7LsKsO(._¨ - (push the input) e.g.: [2,4,7]
7 - push 7 7,[2,4,7]
L - range [1,2,3,4,5,6,7],[2,4,7]
s - swap top two of the stack [2,4,7],[1,2,3,4,5,6,7]
K - push a without bs [1,3,5,6]
s - swap top two of the stack [2,4,7],[1,3,5,6] (implicit input swapped in)
O - sum 13,[1,3,5,6]
( - negate -13,[1,3,5,6]
._ - rotate a left by b [6,1,3,5]
¨ - remove rightmost [6,1,3]
- implicit print top of stack [6,1,3]
C (gcc) , 84 83 ไบต์
บันทึกมหันต์16 19 23 ไบต์ด้วยตัวเองเพดานแคท !!!
บันทึกไบต์ขอบคุณนีล !!!
p;i;f(m){for(p=i=0;(L"ᨴᘬᤲᔪ"[p]>>i%7&m)-m;p+=++i%7<1);p=(64>>i%7)+m^127;}
ลองออนไลน์!
รับข้อมูลเป็น\$3\$บิตที่ตั้งค่าเป็นค่าความสำคัญน้อยที่สุด - \$7\$- บิตของintและส่งกลับตัวเลขอีกสามตัวในทำนองเดียวกัน
คำอธิบาย (ก่อนเล่นกอล์ฟ)
f(m){ // function taking an integer with
// 3 bits set in its 7 lsb
// representing the 3 input numbers
for( // loop over
p=L"ᔪᘬᤲᨴ" // a sequence of 5 int values:
// 5418,5676,6450,6708,7224
// that are the 5 unique patterns of
// 3 set bits per 7 bits shifted and
// repeated over 13 bits so that their
// 7th bit is unset:
// 5418 = 1010100101010
// 5676 = 1011000101100
// 6450 = 1100100110010
// 6708 = 1101000110100
// 7224 = 1110000111000
;;++p) // no need to test for stopping
// since we must match one
for(i=7;i--;) // loop over shift values from 6 to 0
if((*p>>6-i&m)==m) // if a shifted 7-bit slice of one of
// our patterns matches m we've found
// the correct bit to exclude from m's
// 4 unset bits
return(1<<i)+m^127; // add that bit to m and flip the 7
// lsb so the 3 other unset bits are
// now set to represent the 3 return
// values
}
แกลบ 9 ไบต์
hṙ_Σ¹`-ḣ7
ลองออนไลน์!
Perl 5 , 49 ไบต์
sub{@c=grep!/[@_]/,0..6;splice@c,-sum(@_)%4,1;@c}
ลองออนไลน์!
เพียงแค่แปลคำตอบ python จาก HyperNeutrino
Scala 64 ไบต์
b=>1.to(7).diff(b).zipWithIndex.filter(_._2!=b.sum*3%4)map(_._1)
ลองออนไลน์!
ทับทิม 38 ไบต์
->s{n=s.sum;(([*1..7]-s)*9)[-n..-n+2]}
ลองออนไลน์!
ขโมยคำตอบของเอริคซึ่งขึ้นอยู่กับคำตอบของโจนาธาน ฉันจะแสดงความคิดเห็นกับเอริค แต่ฉันไม่มีชื่อเสียงมากพอ
ความแตกต่างที่แท้จริง: การใช้ช่วงเพื่อให้ได้ชิ้นส่วนสามองค์ประกอบ
ทับทิม 40 ไบต์
->s{(([*1..7]-s)*9).last(s.sum).first 3}
ลองออนไลน์!
พอร์ตทับทิมของโจนาธานตอบ
05AB1E , 17 ไบต์
7LIм{3.$IO(._Dg<£
ลองออนไลน์!
เป็นคำตอบ Jelly เวอร์ชันที่ยาวกว่ามากดังนั้นควรโหวตให้คะแนนด้วย
APL + WIN 20 ไบต์
พร้อมต์สำหรับการป้อนเวกเตอร์ของจำนวนเต็ม
3↑(-+/¯2↑n)⌽n←(⍳7)~⎕
ลองออนไลน์! ขอบคุณ Dyalog Classic
APL (Dyalog Unicode) , 13 ไบต์SBCS
1∘↓+/⌽(⌽⍳7)∘~
ลองออนไลน์!
นี่คือด้านบนของรถไฟ
1∘↓+/⌽(⌽⍳7)∘~
(⌽⍳7)∘~ ⍝ Right side of the atop
⍳7 ⍝ Range
⌽ ⍝ Reverse
∘ ⍝ Composed with...
~ ⍝ ...without (to remove our arguments)
⌽ ⍝ Rotated by...
+/ ⍝ ...the sum of the arguments
1∘↓ ⍝ Left side of the atop
1∘↓ ⍝ Drop leftmost (drop curried with 1)