องค์ประกอบ D4 ของกลุ่ม Dihedral พร้อมป้ายกำกับที่กำหนดเอง


14

กลุ่มไดฮีดรัลD4เป็นกลุ่มสมมาตรของจตุรัสนั่นคือการเคลื่อนไหวที่เปลี่ยนสแควร์เป็นตัวของมันเองผ่านการหมุนและการสะท้อนกลับ ประกอบด้วย 8 องค์ประกอบ: การหมุน 0, 90, 180 และ 270 องศาและการสะท้อนกลับในแนวนอนแนวตั้งและแกนแนวทแยงสองแกน

8 องค์ประกอบของ D4 ทำหน้าที่เป็นสี่เหลี่ยมจัตุรัส

ภาพทั้งหมดมาจากหน้าน่ารักนี้โดย Larry Riddle

ความท้าทายนี้เกี่ยวกับการเขียนการเคลื่อนไหวเหล่านี้: เมื่อได้รับการเคลื่อนไหวสองครั้งแล้วให้ส่งออกท่าที่เทียบเท่ากับการทำสิ่งต่อไปนี้ ตัวอย่างเช่นการย้าย 7 ตามด้วยการย้าย 4 จะเหมือนกับการย้าย 5

ตัวอย่างองค์ประกอบ

โปรดทราบว่าการสลับคำสั่งเพื่อย้าย 4 จากนั้นย้าย 7 จะสร้างการย้าย 6 แทน

ผลสรุปได้ดังนี้; นี้เป็นตารางเคย์ลีของกลุ่มD4 4 ตัวอย่างเช่นอินพุต7,4ควรผลิตออก55

12345678123456781234567823418756341265874123786557681324685731427685421385762431

ท้าทาย

เป้าหมายของคุณคือการใช้การดำเนินการนี้ในไม่กี่ไบต์เท่าที่จะทำได้ แต่นอกเหนือจากรหัสแล้วคุณยังเลือกป้ายกำกับที่แสดงการเคลื่อนไหว 1 ถึง 8 ป้ายกำกับต้องมี8 ตัวเลขที่แตกต่างกันตั้งแต่ 0 ถึง 255หรือ 8 หนึ่ง - อักขระไบต์จุดรหัสของพวกเขาแทน

รหัสของคุณจะได้รับป้ายกำกับสองรายการจาก 8 รายการที่คุณเลือกและต้องส่งออกป้ายกำกับที่สอดคล้องกับองค์ประกอบในกลุ่ม dihedral D4 4

ตัวอย่าง

สมมติว่าคุณเลือกอักขระ C, O, M, P, U, T, E, R สำหรับการเลื่อน 1 ถึง 8 ตามลำดับ จากนั้นรหัสของคุณควรใช้ตารางนี้

COMPUTERCOMPUTERCOMPUTEROMPCREUTMPCOTUREPCOMERTUUETRCMOPTRUEMCPOETRUPOCMRUETOPMC

รับอินพุต E และ P คุณควรเอาต์พุต U อินพุตของคุณจะเป็นสองตัวอักษร C, O, M, P, U, T, E, R และเอาต์พุตของคุณควรเป็นหนึ่งในตัวอักษรเหล่านี้เสมอ

ตารางข้อความสำหรับการคัดลอก

1 2 3 4 5 6 7 8
2 3 4 1 8 7 5 6
3 4 1 2 6 5 8 7
4 1 2 3 7 8 6 5
5 7 6 8 1 3 2 4
6 8 5 7 3 1 4 2
7 6 8 5 4 2 1 3
8 5 7 6 2 4 3 1

Your choice of labels doesn't count against your code length.คิดอย่างละเอียด? ฉันสามารถเข้ารหัสเมทริกซ์ในโค้ดของฉันและอ้างว่ามันไม่นับคะแนนของฉัน
Benjamin Urquhart

2
@BenjaminUrquhart ฉันพยายามที่จะพูดความยาวของรหัสของคุณเป็นเพียงความยาวของรหัสของคุณและพูดว่าการเลือกป้ายกำกับหลายหลักไม่ได้มีค่าใช้จ่ายเพิ่มเติม ดูเหมือนว่าบรรทัดนั้นจะสับสนว่ามีประโยชน์มากกว่าดังนั้นฉันจะลบออก
xnor

คำตอบ:


10

ทับทิมขนาด 18 ไบต์

->a,b{a+b*~0**a&7}

Ungolfed

->a,b{ (a+b*(-1)**a) % 8}  
# for operator precedence reasons, 
#-1 is represented as ~0 in the golfed version 

ลองออนไลน์!

ใช้หมายเลขการเข้ารหัสต่อไปนี้ 0 ถึง 7

ในการสั่งซื้อรหัสพื้นเมือง:

Native     Effect                    Codes per
Code                                 Question
0          rotate 0 anticlockwise    1C
1 /        flip in y=x               7E
2 /|       rotate 90 anticlockwise   2O
3 /|/      flip in x axis            5U
4 /|/|     rotate 180 anticlockwise  3M
5 /|/|/    flip in y=-x              8R
6 /|/|/|   rotate 270 anticlockwise  4P
7 /|/|/|/  flip in y axis            6T

ตามลำดับต่อคำถาม

Native     Effect                    Codes per
Code                                 Question
0          rotate 0 anticlockwise    1C
2 /|       rotate 90 anticlockwise   2O
4 /|/|     rotate 180 anticlockwise  3M
6 /|/|/|   rotate 270 anticlockwise  4P
3 /|/      flip in x axis            5U
7 /|/|/|/  flip in y axis            6T
1 /        flip in y=x               7E
5 /|/|/    flip in y=-x              8R

คำอธิบาย

/แสดงถึงการพลิกในบรรทัดy=xและ|แสดงถึงการพลิกในแกน y

เป็นไปได้ที่จะสร้างสมมาตรใด ๆ ของกลุ่ม D4 โดยสลับกันในสองบรรทัดนี้ตัวอย่างเช่น/ตามด้วยการ|ให้/|ซึ่งเป็นการหมุน 90 องศาทวนเข็มนาฬิกา

จำนวนการโยนติดต่อกันทั้งหมดช่วยให้การแทนเลขคณิตสะดวกยิ่งขึ้น

หากการเลื่อนครั้งแรกเป็นการหมุนเราสามารถเพิ่มจำนวนการพลิกได้:

Rotate 90 degrees   +  Rotate 180 degrees = Rotate 270 degrees
/|                     /|/|                 /|/|/|

Rotate 90 degress   +  Flip in y=x        = Flip in x axis   
/|                    /                     /|/

หากการเคลื่อนที่ครั้งแรกเป็นการสะท้อนเราจะพบว่าเรามีการสะท้อน/และ|สัญลักษณ์ที่เหมือนกันอยู่ติดกัน เนื่องจากการสะท้อนกลับเป็นสิ่งที่ตรงกันข้ามเราสามารถยกเลิกการพลิกเหล่านี้ทีละตัว ดังนั้นเราต้องลบการเคลื่อนที่หนึ่งครั้งจากอีกอันหนึ่ง

Flip in x axis     +  Flip in y=x        = Rotate 90 degrees
/|/                   /                    /|/ / (cancels to) /|

Flip in x axis     +  Rotate 90 degrees  = Flip in y=x
/|/                   /|                   /|/ /| (cancels to ) / 

1
คุณสามารถแทนที่~0ด้วย7เพราะของคณิตศาสตร์เลขคณิต
NieDzejkob

สุดยอดวิธีการและคำอธิบาย! วิธีการยกเลิกแบบพลิกทำให้ชัดเจนจริงๆว่าทำไมฉลากจึงเพิ่มหรือลบ
xnor

7

ภาษา Wolfram (Mathematica) , 31 ไบต์

ใช้จำนวนเต็ม0,5,2,7,1,3,6,4เป็นป้ายกำกับ

BitXor[##,2Mod[#,2]⌊#2/4⌋]&

ลองออนไลน์!

คำอธิบาย:

กลุ่ม Dihedral D4 isomorphic กับกลุ่มเมทริกซ์หน่วยของรูปสามเหลี่ยมที่มีองศาเหนือสนามF2 :

D4U(3,2):={(1ab01c001)a,b,cF2}.

และเรามี

(1a1b101c1001)(1a2b201c2001)=(1a1+a2b1+b2+a1c201c1+c2001),

ซึ่งสามารถเขียนได้ง่ายในการทำงานระดับบิต


สวยมา - ฉันไม่ทราบเกี่ยวกับมอร์ฟิซึ่มส์นี้
xnor

5

ภาษา Wolfram (Mathematica) , 51 ไบต์

⌊#/4^IntegerDigits[#2,4,4]⌋~Mod~4~FromDigits~4&

ลองออนไลน์!

{228, 57, 78, 147, 27, 177, 198, 108}การใช้ป้ายกำกับ

สิ่งเหล่านี้อยู่{3210, 0321, 1032, 2103, 0123, 2301, 3012, 1230}ในฐาน 4 โชคดีที่ 256 = 4 ^ 4


การใช้งานระดับล่างเช่นกัน 51 ไบต์

Sum[4^i⌊#/4^⌊#2/4^i⌋~Mod~4⌋~Mod~4,{i,0,3}]&

ลองออนไลน์!



4

Python 2 , 26 23 21 ไบต์

lambda x,y:y+x*7**y&7

ลองออนไลน์! พอร์ตคำตอบของฉันไปยังCayley Table of the Dihedral GroupD3. แก้ไข: บันทึกแล้ว 3 ไบต์ขอบคุณ @NieDzejkob บันทึก 2 ไบต์ขอบคุณ @xnor สำหรับการแนะนำตัวดำเนินการand(มากกว่าxnor) ใช้การแม็พต่อไปนี้:

 id | r1 | r2 | r3 | s0 | s1 | s2 | s3 
----+----+----+----+----+----+----+----
 0  | 2  | 4  | 6  | 1  | 3  | 5  | 7  

2
คุณสามารถแทนที่(-1)ด้วย7เนื่องจากเลขคณิตแบบแยกส่วนสำหรับ -3 ไบต์
NieDzejkob

@NieDzejkob ขอบคุณ! ความอัปยศที่ alephalpha แข็งแรงเล่นกอล์ฟคำตอบของเขาลง 28-22 ไบต์ แต่ ...
นีล

เป็นทางออกที่ดี! คุณสามารถตัด parens โดยเปลี่ยนลำดับตัวดำเนินการ:y+x*7**y&7
xnor

@xnor ขอบคุณฉันไปข้างหน้าของ alephalpha อีกครั้ง!
Neil

3

TI-BASIC, 165 ไบต์

Ans→L₁:{.12345678,.23417865,.34126587,.41238756,.58671342,.67583124,.75862413,.86754231→L₂:For(I,1,8:10fPart(.1int(L₂(I)₁₀^(seq(X,X,1,8:List▶matr(Ans,[B]:If I=1:[B]→[A]:If I-1:augment([A],[B]→[A]:End:[A](L₁(1),L₁(2

Ansป้อนข้อมูลคือรายการของความยาวสองใน
เอาท์พุทเป็นจำนวนที่(row, column)ดัชนีในตาราง

อาจมีวิธีการบีบอัดที่ดีกว่าซึ่งจะช่วยประหยัดไบต์ แต่ฉันจะต้องดูว่า

ตัวอย่าง:

{1,2
           {1 2}
prgmCDGF1B
               2
{7,4
           {7 4}
prgmCDGF1B
               5

คำอธิบาย:
(มีการเพิ่มบรรทัดใหม่เพื่อให้สามารถอ่านได้)

Ans→L₁                              ;store the input list into L₁
{.123456 ... →L₂                    ;store the compressed matrix into L₂
                                    ; (line shortened for brevity)
For(I,1,8                           ;loop 8 times
10fPart(.1int(L₂(I)₁₀^(seq(X,X,1,8  ;decompress the "I"-th column of the matrix
List▶matr(Ans,[B]                   ;convert the resulting list into a matrix column and
                                    ; then store it into the "[B]" matrix variable
If I=1                              ;if the loop has just started...
[B]→[A]                             ;then store this column into "[A]", another matrix
                                    ; variable
If I-1                              ;otherwise...
augment([A],[B]→[A]                 ;append this column onto "[A]"
End
[A](L₁(1),L₁(2                      ;get the index and keep it in "Ans"
                                    ;implicit print of "Ans"

นี่เป็นวิธีแก้ปัญหา155 ไบต์แต่มันก็แค่เข้ารหัสเมทริกซ์และรับดัชนี
ฉันพบว่ามันน่าเบื่อมากขึ้นดังนั้นฉันจึงไม่ได้ทำให้เป็นทางการของฉัน:

Ans→L₁:[[1,2,3,4,5,6,7,8][2,3,4,1,8,7,5,6][3,4,1,2,6,5,8,7][4,1,2,3,7,8,6,5][5,7,6,8,1,3,2,4][6,8,5,7,3,1,4,2][7,6,8,5,4,2,1,3][8,5,7,6,2,4,3,1:Ans(L₁(1),L₁(2

หมายเหตุ: TI-BASIC เป็นภาษาโทเค็น จำนวนตัวอักษรไม่เท่ากับจำนวนไบต์


คุณไม่สามารถโกนได้เหมือนหนึ่งไบต์โดยใช้0-7เพื่อ1-8
เท่านั้น

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

ผิดคุณสามารถใช้ชุดอักขระใด ๆ ได้ดังนั้นคุณจึงไม่ต้องใช้อีกสองตัว
เท่านั้น

นั่นอาจเป็นจริง แต่เมทริกซ์ของ TI-BASIC นั้นมีดัชนี 1 รายการ ส่งนี้อาศัยอยู่กับว่าจะได้รับค่าที่ต้องการ (ถ้านั่นคือสิ่งที่คุณอ้างว่าถูกต้องฉันหากฉันผิด.)
เอกภาพ

โอ้ลืมไปแล้ว
เท่านั้น

3

เยลลี่ขนาด 6 ไบต์

N⁹¡+%8

ลิงก์ dyadic ยอมรับการแปลงแรกทางด้านขวาและการแปลงที่สองทางด้านซ้ายซึ่งให้การแปลงคอมโพสิต

การเปลี่ยนแปลงอยู่ที่ไหน:

as in question:  1    2    3    4    5    6    7    8
transformation: id  90a  180  90c  hor  ver  +ve  -ve
  code's label:  0    2    4    6    1    5    7    3

ลองออนไลน์! ... หรือดูตารางแมปกลับไปยังป้ายในคำถาม

(ข้อโต้แย้งสามารถดำเนินการในลำดับอื่นโดยใช้ 6 byter _+Ḃ?%8)

อย่างไร?

แต่ละฉลากคือความยาวของลำดับการสลับhorและการ+veแปลงซึ่งเทียบเท่ากับการแปลง (เช่น180เทียบเท่าhor, +ve, hor, +ve)

การจัดวางA,Bนั้นเทียบเท่ากับการต่อกันของสองลำดับที่เท่ากันและช่วยให้การลบง่ายขึ้นหรือการบวกโมดูโลที่แปด ...

ใช้7, 4ตัวอย่างของคำถามที่เรามี+ve, 90cคือ:
hor, +ve, hor, +ve, hor, +ve, hor , hor, +ve, hor, +ve, hor, +ve

... แต่เนื่องจากhor, horเป็นidเรามี:
hor, +ve, hor, +ve, hor, +ve , +ve, hor, +ve, hor, +ve

... และตั้งแต่+ve, +veเป็นidเรามี:
hor, +ve, hor, +ve, hor , hor, +ve, hor, +ve

... และเราสามารถยกเลิกการจองเหล่านี้ซ้ำกับ:
hor
.. เทียบเท่ากับการลบความยาว ( 7-6=1)

เมื่อไม่มีการยกเลิกที่เป็นไปได้เราเพียงแค่เพิ่มความยาว (เช่น 90a, 180 2+4=6 90c)

สุดท้ายโปรดทราบว่าลำดับความยาวแปดคือidเพื่อให้เราสามารถนำลำดับความยาวผลลัพธ์แบบโมดูโลแปด

N⁹¡+%8 - Link: B, A
  ¡    - repeat (applied to chain's left argument, B)...
 ⁹     - ...times: chain's right argument, A
N      - ...action: negate  ...i.e. B if A is even, otherwise -B
   +   - add (A)
    %8 - modulo eight

นอกจากนี้ยังสั้นกว่าการใช้งานนี้ 1 ไบต์โดยใช้ดัชนีการเปลี่ยนแปลงการจัดเรียงพจนานุกรม:

œ?@ƒ4Œ¿

... การยอมรับลิงก์แบบ monadic [first, second]โดยมีป้ายกำกับ:

as in question:  1    2    3    4    5    6    7    8
transformation: id  90a  180  90c  hor  ver  +ve  -ve
  code's label:  1   10   17   19   24    8   15    6

3

JavaScript (Node.js) , 22 17 ไบต์

(x,y)=>y+x*7**y&7

ลองออนไลน์! พอร์ตคำตอบของฉันไปยังCayley Table of the Dihedral GroupD3แต่ใช้คำแนะนำในคำตอบของ Python ใช้การแม็พต่อไปนี้:

 id | r1 | r2 | r3 | s0 | s1 | s2 | s3 
----+----+----+----+----+----+----+----
 0  | 2  | 4  | 6  | 1  | 3  | 5  | 7  

JavaScript รุ่นที่เก่ากว่าสามารถรองรับได้หลายวิธีสำหรับ 22 ไบต์:

(x,y)=>(y&1?y-x:y+x)&7
(x,y)=>y-x*(y&1||-1)&7
(x,y)=>y+x*(y<<31|1)&7

การปรับปรุงเล็กน้อย- บันทึกไบต์ด้วยการป้อนข้อมูลแบบแกงx=>y=>(y&1?y-x:y+x)&7แล้วเรียกใช้ฟังก์ชันของคุณ f(x)(y)
dana


2

Elm , 42 ไบต์ 19 ไบต์

\a b->and 7<|b+a*7^b

พอร์ตของเวอร์ชัน NeodeของNode.js

ลองออนไลน์

รุ่นก่อนหน้า:

\a b->and 7<|if and 1 a>0 then a-b else a+b

1
คำตอบแรกที่ดี! ฉันไม่ทราบวิธีการเขียนโปรแกรมใน Elm แต่สามารถลบช่องว่างได้หรือไม่
MilkyWay90

@ MilkyWay90 ไม่นี่เป็นหนึ่งในความแตกต่างหลักของภาษาที่ใช้ ML ซึ่งf xเป็นการเรียกใช้ฟังก์ชันเช่นเดียวกับความf(x)หมายในภาษา C-like และคุณไม่สามารถช่วยได้ แต่มันสามารถทำได้ดีจริงๆและมีความยุ่งเหยิงน้อยลงในสถานการณ์ที่ไม่ใช่กอล์ฟ Elm ไม่มีตัวดำเนินการระดับบิต (เช่น &) ดังนั้นจึงand x yเป็นเพียงการเรียกใช้ฟังก์ชันธรรมดาที่นี่
Evgeniy Malyutin

ฉันเห็นขอบคุณที่อธิบาย!
MilkyWay90

@ MilkyWay90 ที่จริงฉันจัดการเพื่อตัดหนึ่งช่องว่าง (และไบต์) โดยใช้ตัวดำเนินการไปป์<|แทนวงเล็บ ขอบคุณสำหรับการตั้งคำถาม!
Evgeniy Malyutin

ยินดีต้อนรับคุณ! หากคุณสนใจที่จะสร้างโซลูชันใหม่คุณสามารถขอความช่วยเหลือจาก The Nine Nine Byte (ห้องแชท SE ของเรา) เพื่อขอความช่วยเหลือ หากคุณกำลังสร้างความท้าทายในการเขียนโค้ดคุณสามารถโพสต์ไว้ที่ The Sandbox (ใน meta) และโพสต์ลิงก์ไปยังคำถามเกี่ยวกับ The Nineteenth Byte ทุกวัน
MilkyWay90

1

Python, 82 71 ไบต์

0-7

-11 ไบต์ขอบคุณ ASCII-only

lambda a,b:int("27pwpxvfcobhkyqu1wrun3nu1fih0x8svriq0",36)>>3*(a*8+b)&7

TIO



ด้วย 76และ -2 เพราะf=สามารถลบออกได้เนื่องจากไม่ใช่การเรียกซ้ำ
เท่านั้น

รอการคัดลอกใช้งานไม่ได้
เท่านั้น


ดูเหมือนว่าคุณจะทำได้ดีกว่าด้วยint.from_bytesการเข้ารหัสที่ไม่ใช่ UTF แต่ ... ไม่แน่ใจว่าจะทำอย่างไรกับ TIO
ASCII เท่านั้น

0

สกาล่า , 161 ไบต์

เลือกคอมพิวเตอร์เป็นป้ายกำกับ

val m="0123456712307645230154763012675446570213574620316574310274651320"
val s="COMPUTER"
val l=s.zipWithIndex.toMap
def f(a: Char, b: Char)=s(m(l(a)*8+l(b))-48)

ลองออนไลน์!


1
นี่คือรหัสกอล์ฟ: | คุณควรทำให้มันสั้นที่สุดเท่าที่จะเป็นไปได้
เท่านั้น


ใช่ฉันท้าทายตัวเองให้ไปกับสกาล่าและป้ายกำกับจริงไม่ใช่เฉพาะเจ้าของภาษา 0-7 พยายามเอาชนะมัน
ปีเตอร์



0

สกาล่า , 70 ไบต์

เลือก 0-7 จำนวนเต็มเนทีฟเป็นป้ายกำกับ

บีบอัดเมทริกซ์เป็นสตริง ASCII ขนาด 32 ไบต์แต่ละคู่ของตัวเลข n0, n1 เป็น 1 ตัวอักษร c = n0 + 8 * n1 + 49 เริ่มต้นจาก 49 ถึงเราไม่มี \ ในสตริงที่เข้ารหัส

(a:Int,b:Int)=>"9K]oB4h]K9Vh4BoVenAJne3<_X<AX_J3"(a*4+b/2)-49>>b%2*3&7

ลองออนไลน์!




-3

ภาษา Wolfram (Mathematica), 7 ไบต์ (การเข้ารหัส UTF-8)

#⊙#2&

ฟังก์ชันบริสุทธิ์รับสองอาร์กิวเมนต์ สัญลักษณ์ที่แสดงที่นี่ในฐานะเป็นจริง Mathematica ส่วนตัวของ Unicode สัญลักษณ์ F3DE (3 bytes) PermutationProductซึ่งหมายถึงฟังก์ชั่น

Mathematica รู้เกี่ยวกับกลุ่ม dihedral และมันหมายถึงองค์ประกอบของกลุ่มต่าง ๆ เป็นพีชคณิตเขียนโดยใช้Cyclesคำสั่ง ตัวอย่างเช่นการรันคำสั่ง

GroupElements[DihedralGroup[4]]

ผลผลิตผลลัพธ์:

{Cycles[{}], Cycles[{{2, 4}}], Cycles[{{1, 2}, {3, 4}}], 
 Cycles[{{1, 2, 3, 4}}], Cycles[{{1, 3}}], Cycles[{{1, 3}, {2, 4}}], 
 Cycles[{{1, 4, 3, 2}}], Cycles[{{1, 4}, {2, 3}}]}

PermutationProduct เป็นฟังก์ชั่นที่คูณองค์ประกอบกลุ่มเมื่อเขียนในรูปแบบนี้

เนื่องจากเราได้รับอนุญาตให้เลือกป้ายกำกับของเราเองฟังก์ชันนี้จะถือว่าป้ายกำกับเหล่านี้สำหรับองค์ประกอบกลุ่ม การมอบหมายระหว่างป้ายกำกับเหล่านี้และป้ายกำกับในโพสต์ปัญหานั้นได้รับจาก:

Cycles[{}] -> 1
Cycles[{{1, 2, 3, 4}}] -> 2
Cycles[{{1, 3}, {2, 4}}] -> 3
Cycles[{{1, 4, 3, 2}}] -> 4
Cycles[{{2, 4}}] -> 5
Cycles[{{1, 3}}] -> 6
Cycles[{{1, 2}, {3, 4}}] -> 7
Cycles[{{1, 4}, {2, 3}}] -> 8

tl; dr มีตัวใน


8
เลเบลต้องเป็นตัวเลข 0 ถึง 255 หรือไบต์เดียว
xnor

ยุติธรรมพอ (ฉันยินดีที่ได้ค้นพบฟังก์ชั่นนี้โดยไม่คำนึงถึง) คุณช่วยอธิบายได้ไหมใน OP? ตอนนี้มันอ่านเหมือน "เลือกป้ายกำกับของคุณเอง" (เน้น) แล้วตัวเลือกที่เป็นไปได้สอง ("คุณอาจ ... ")
Greg Martin

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