ตอนนี้ฉันรู้เบื้องต้นของคุณแล้วคุณจะไม่มาเล่นกอล์ฟกับฉันเหรอ?


46

เขียนโปรแกรมหรือฟังก์ชั่นที่แสดงข้อความที่ตรงตามตัวพิมพ์ใหญ่ - เล็ก:

A, B, C, D, E, F, G,
H, I, J, K, L, M, N, O, P,
Q, R, S,
T, U, V,
W, X, Y, Z.

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

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

นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ


4
สำหรับภาษาที่ใช้ regex ให้พิจารณาความกว้างของการค้นหา 0/(?=[HQTW])/
Magic Octopus Urn

29
ฉันคิดว่ามันเป็นH, I, J, K, LMNO, Pอย่างไร
Reinstate Monica

7
บรรทัดสุดท้ายไม่ควรลงท้ายด้วย "Y และ Z"
กม.

@KM สิ่งนี้ถูกกล่าวถึงในกล่องทรายและเราตัดสินใจที่จะติดกับเวอร์ชั่นนี้เพื่อให้การท้าทายมีความซับซ้อนน้อยลง
ETHproductions

6
กอล์ฟดูน่าเบื่อ คริกเก็ตดีกว่า
Manoj Kumar

คำตอบ:


15

เป็นกลุ่ม42 , 40 keystrokes / bytes

:h<_<cr>jjYZZP:s/./&, /g<cr>7f r<cr>9;.3;.3;.$ch.

ขอบคุณLynn และคำตอบที่น่ากลัวของเธอสำหรับเคล็ดลับในการคว้าตัวอักษรจากความช่วยเหลือ

ขอบคุณRomanGräfสำหรับการบันทึกสองไบต์!

คำอธิบาย:

:h<_<cr>                                      " Open up vim-help
        jj                                    " Move down two lines
          Y                                   " Yank this line (containing the alphabet)
           ZZ                                 " Close this buffer
             P                                " Paste the line we just yanked
              :s/./&, /g<cr>                  " Replace every character with that character followed by a comma and a space
                            7f                " Find the seven space on this line
                               r<cr>          " And replace it with a newline
                                    9;        " Repeat the last search (space) 9 times
                                      .       " Repeat the last edit (replace with a newline)
                                       3;     " Third space
                                         .    " Replace with newline
                                          3;  " Third space
                                            . " Replace with newline

จากนั้นเราย้ายจุดสิ้นสุดของบรรทัดด้วย$เปลี่ยนอักขระด้วยchและแทรกจุด


2
คุณต้องไม่แปลงเป็นตัวพิมพ์ใหญ่ OP กล่าวว่า "ข้อความที่ตรงตามตัวพิมพ์เล็กและใหญ่"
Roman Gräf

@ RomanGräfขอบคุณสำหรับเคล็ดลับ!
DJMcMayhem

ฮา! การได้รับตัวอักษรจากความช่วยเหลือเป็นกลุ่มนั้นอัจฉริยะ! คุณรู้หรือไม่ว่าคุณค้นหาความท้าทายนี้
Christian Rondeau

3
@christianRondeau ฉันไม่ได้เกิดขึ้นกับมัน Lynn ทำตามคำตอบนี้
DJMcMayhem

@ RomanGräf +1 สำหรับการใช้งานต้องห้าม
FantaC

12

05AB1E , 16 ไบต์

รหัส

A',â79334S£»¨'.J

คำอธิบาย:

A                  # Push the alphabet.
 ',â               # Cartesian product with ','.
    79334S         # Push [7, 9, 3, 3, 4].
          £        # Contigious substring, pushes the substrings [0:7], [7:7+9], 
                     [7+9:7+9+3], [7+9+3:7+9+3+3], [7+9+3+3:7+9+3+3+4].
           »       # Gridify, join the inner arrays with spaces and join those arrays
                     with newlines.
            ¨      # Remove the last character.
             '.J   # Append a '.'-character.

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



11

JavaScript (ES6), 66 65 ไบต์

การตี@Neilนั้นเป็นไปไม่ได้ ... นั่นเป็นสาเหตุที่ฉันทำ :-)

f=(i=10)=>i>34?"z.":i.toString(++i)+","+` 
`[9568512>>i-9&1]+f(i)

แข็งแรงเล่นกอล์ฟ 1 ขอบคุณไบต์เคล็ดลับจาก@LevelRiverSt การใช้String.fromCharCodeมีความยาว 7 ไบต์:

f=(i=65)=>i>89?"Z.":String.fromCharCode(i,44,i%86%83%80%71?32:10)+f(i+1)

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

นี้ซ้ำสร้างตัวละครของตัวอักษรจากแต่ละaที่จะใช้y .toString()เครื่องหมายจุลภาคจะถูกต่อท้ายตัวอักษรแต่ละตัวรวมถึงการขึ้นบรรทัดใหม่ถ้า9568512>>i-9&1เป็น 1 หรือเว้นวรรคเป็นอย่างอื่น เมื่อการเรียกซ้ำได้รับ 34 ที่ผ่านมานั่นคือzฟังก์ชั่นก็กลับ"z."มา


รอสิ่งนี้จะทำยังไง - คำอธิบายได้ไหม? : 3
Downgoat


6

เยลลี่ , 19 18 ไบต์

ØAp”,ṁ79334DR¤GṖ”.

ขอบคุณ @Adnan สำหรับการเล่นกอล์ฟ 1 ไบต์!

ลองออนไลน์!

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

ØAp”,ṁ79334DR¤GṖ”.  Main link. No arguments.

ØA                  Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
  p”,               Cartesian product with ','; append a comma to each letter.
             ¤      Combine the two links to the left into a niladic chain.
      79334D          Decimal; yield [7, 9, 3, 3, 4].
            R         Range; yield [[1, 2, 3, 4, 5, 6, 7], ..., [1, 2, 3, 4]].
     ṁ              Mold; reshape the array of letters with commata like the
                    generated 2D array.
              G     Grid; separate rows by spaces, columns by linefeeds.
               Ṗ    Pop; discard the last comma.
                ”.  Print the previous result and set the return value to '.'.
                     (implicit) Print the return value.

11
31 วินาที แดง ...
ETHproductions

5

JavaScript (ES6), 80 74 ไบต์

_=>[...`ABCDEFGHIJKLMNOPQRSTUVWXYZ`].join`, `.replace(/[HQTW]/g,`
$&`)+`.`

อาจเป็นไปได้ที่จะย่อให้สั้นลงด้วย atob / btoa หากคุณสามารถหาวิธีใช้การเข้ารหัส ISO-8859-1 แก้ไข: บันทึกแล้ว 6 ไบต์ขอบคุณ @RickHitchcock


1
@ RickHitchcock ใช่ฉันเพิ่งรู้ว่าตัวเองหลังจากอ่านคำตอบ PHP
Neil

@RickHitchcock คุณต้องการ.join`, `หรือไม่ ใส่แบ็กสแลชต่อหน้า backticks (ใช่ความเห็นแตกต่างกันถอนหายใจ ... )
Neil


5

R, 83 71 ไบต์

a=rbind(LETTERS[-26],","," ");a[3,7+3*c(0,3:5)]="\n";cat(a,"Z.",sep="")

ลองออนไลน์!

ทำให้เมทริกซ์ขนาด 3 แถว (อันหนึ่งมีตัวอักษรตัวหนึ่งกับคอมม่าและอีกอันมีช่องว่างหรือขึ้นบรรทัดใหม่)

แก้ไข : ขอบคุณ Billywob!


cat(a,sep="")บันทึกไม่กี่ไบต์:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
Billywob

ขอบคุณ! นั่นช่วยได้มาก! การใช้[-26]on LETTERSจะบันทึกโดยตรงอีกหนึ่งไบต์
plannapus

4

CJam, 26 ไบต์

'A79333Ab{{',S2$)}*N\}/'.@

ล่ามออนไลน์

'A                             Push 'A'
  79333Ab                      Push [7 9 3 3 3]
         {           }/        For each number n in the previous array...
          {      }*              Execute n times...
           ',S                     Push a comma and a space
              2$)                  Copy last letter and increment
                   N\            Place a newline under the letter on top
                       '.@     Push '.' and rotate

4

Brainfuck, 117 ไบต์

+[++[-<]-[->->]<]+++[->++>+++>+>+<<<<<--<<->>>]>+[[-<<<<<+.>-.+>.>>>]>[[-<+>]>]<<[<]<.>>]<<-[---<<<+.>-.+>.>]<<<+.>+.

สี่บรรทัดแรกแต่ละบรรทัดมีพื้นที่ต่อท้ายและโปรแกรมใช้เซลล์ 8 บิต ลองออนไลน์!

(การจัดการกับบรรทัดสุดท้ายนั้นยุ่งยาก ... )


4

Perl, 37 ไบต์

เพิ่มเครดิตให้กับ@Dom Hastingsสำหรับโซลูชันนี้ (สั้นกว่าของฉัน 3 ไบต์ดูที่การร้อง)

say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."

เรียกใช้ด้วยธง-E(หรือ-M5.010):

perl -E 'say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."'

รุ่นก่อนหน้าของฉันยาวกว่า 3 ไบต์ (รวม 40 ไบต์):

perl -E '$_=join", ",A..Z;s/[HQTW]/\n$&/g;say"$_."'

1
วิธีที่แตกต่างกันเล็กน้อย (ยังคงใช้ regex ... ) เป็นเวลา 37 ไบต์:say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
Dom Hastings

@ DomHastings เป็นคนดีทำได้ดีมาก และสวยงามกว่าที่จะมีหนึ่งประโยคแทนที่จะเป็นสาม! ;-)
Dada

4

JavaScript (ES6), 66 64 ไบต์

_=>`ABCDEFG
HIJKLMNOP
QRS
TUV
WXY`.replace(/./g,"$&, ")+"Z."

Regex จับคู่อักขระ แต่ไม่ใช่ carriage return ดังนั้นเมื่อใช้การแทนที่ regex ฉันสามารถเพิ่ม "," ให้กับอักขระแต่ละตัวได้

แก้ไข: ลบ 2 ตัวอักษรด้วย ETHProductions


1
ฉันไม่รู้ว่าทำไมนักกอล์ฟ JS คนอื่นไม่ไปหาทางออกนี้ก่อน ที่นี่มี upvote
Mama Fun Roll

1
ดีจัง! ฉันคิดว่าคุณสามารถลบ parens ใน regex ถ้าคุณเปลี่ยนไป$1 $&
ETHproductions

3

Cheddar, 70 ไบต์

->[65@"71,72@"80,"QRS","TUV","WXYZ"].map(@.chars.join(", ")).vfuse+'.'

ดูเหมือนว่าจะไม่สั้นไปกว่านี้ ฉันทำรุ่นอื่นซึ่งใช้วิธีการที่น่าสนใจ แต่นี่สั้นที่สุด

ลองออนไลน์!

คำอธิบาย

->                        // Function with no arguments
  [                       // Array, each item represents a line
   65@"71,                // See below on what @" does
   72@"80,
   "QRS",
   "TUV",
   "WXYZ"
  ].map(                  // On each item...
    @.chars.join(", ")    // Join the characters on ", "
  ).vfuse                 // Vertical fuse or join by newlines
  + '.'                   // The period at the end

ตัว@"ดำเนินการถูกใช้เพื่อสร้างช่วงของสตริง มันสร้างสตริงเริ่มต้นจากรหัสถ่านด้านซ้ายไปยังรหัสถ่านที่เหมาะสม

ยกตัวอย่างเช่น65เป็นรหัสถ่านสำหรับAและสำหรับ90 Zการทำ65 @" 90จะสร้าง A ถึง Z หรือตัวอักษร


3

C, 112 102 81 ไบต์

ขอบคุณ cleblanc & LevelRiverSt!

i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="‌​GPSVZ"[i]?++i,10:32)‌​;}

ทางออกที่ดี คุณสามารถบันทึกได้สองสามไบต์เนื่องจาก 44 น้อยกว่า 1, 'และ 46 1 น้อยกว่า'
cleblanc

ไม่จำเป็นต้องประกาศ int และคุณสามารถทำ int d สามารถบอกเป็นนัยได้เช่นกันนี่เป็นเพียง 101 ไบต์i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
cleblanc

คุณจะได้รับวิธีการนี้ลงไป 82 i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}ไบต์: โปรดทราบว่าคุณสามารถติดอะไรก็ได้ระหว่าง?:ผู้ประกอบการที่ประกอบไปด้วยแม้แต่การแสดงออกหลายคั่นด้วยเครื่องหมายจุลภาค (มันประเมินไปยังหน้าสุดท้าย)
ระดับแม่น้ำเซนต์


3

Ruby, 56 54 ไบต์

$><<(?A..?Y).map{|c|c+('GPSV'[c]?",
":", ")}.join+"Z."

บรรทัดแรกลงท้ายด้วยการขึ้นบรรทัดใหม่ตามตัวอักษร

แก้ไข:บันทึกไบต์ที่สองโดยการแทนที่ด้วย'A'..'Y'?A..?Y


3

เป็นกลุ่ม 32 ไบต์

26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"

ออกจากบรรทัดว่างในตอนท้ายซึ่งได้รับอนุญาต แต่มันแปลกที่เป็นเงอะงะนี้ แย่ยิ่งกว่านั้นฉันกำลังสิ้นสุดในโหมดแทรก ฉันเคยเห็นคนอื่นทำที่นี่ดังนั้นฉันเดาว่าจะอนุญาตหรือไม่ มันรู้สึกสกปรก

  • 26o<C-V><C-V>64,<Esc>: อันแรก<C-V>ทำให้อันที่สองแทรกอย่างแท้จริง <C-V>64s ใบนี้ในบัฟเฟอร์จะกลายเป็นจุดรหัส ASCII แล้วเข้าไปในตัวอักษร เครื่องหมายจุลภาคอยู่แล้วใน
  • r.: จะไม่สิ้นสุดอีกต่อไปดังนั้นทำ.ตอนนี้
  • V{g<C-A>: ใช้การเพิ่มค่าทางสายตาเพื่อเปลี่ยนค่าทั้งหมด64เป็นค่ารหัส ASCII ของตัวอักษรพิมพ์ใหญ่
  • 8Jj9Jj3Jj.j4J: เส้นรวมเข้าด้วยกัน สิ่งแรกคือ8Jแทนที่จะเป็น7Jเพราะเรากำลังจัดการกับบรรทัดว่าง 3Js ซ้ำมีสิทธิ์ได้รับจุดซ้ำ
  • cH<C-R>": คนมักจะคิดว่าi<C-R>เป็นการวางโหมดแทรก แต่มันก็เหมือนมาโครโหมดแทรก สิ่งที่ต้องการ<C-V>65จะทำงานราวกับพิมพ์และตีความว่าเป็นจุดรหัสทศนิยม การทำเช่นนี้จะทำให้บรรทัดพิเศษ (อนุญาต) สิ้นสุดและอยู่ในโหมดแทรก

4
หากคุณมีปัญหากับนโยบาย (หรือขาดไป) ให้ใช้เมตาดาต้าไม่ใช่คำตอบ
Mego

2

PowerShell v3 +, 60 78 67 ไบต์

-join(65..90|%{[char]$_+'.,'[$_-le89]+" "+"`n"*($_-in71,80,83,86)})

ตกลง. ฉันได้อ่านเข้าใจและทำตามสเป็คแล้วในตอนนี้ คำมั่นสัญญา : D

ใช้เวลาอาร์เรย์และลูปมากกว่าแต่ละองค์ประกอบ65..90 |%{...}การวนซ้ำแต่ละครั้งเรากำลังสร้างสตริงใหม่โดยใช้การเรียงต่อกันการทำดัชนีและการคูณ

อันดับแรกเรารับหมายเลขปัจจุบันและcharส่งไปให้เป็นตัวอักษร ASCII นั่นคือการเชื่อมต่อกับตัวละครอื่นโดยยึดตามการจัดทำดัชนีลงในสตริง'.,'ว่าเราอยู่ที่90หรือไม่ (เช่นเพื่อพิจารณาZ.ขณะที่ส่วนที่เหลือเป็นจุลภาค) นั่นคือสตริงที่ต่อกับ" "ช่องว่างเพื่อแยกตัวอักษรและการคูณสตริง"`n"ตามค่าบูลีนว่าองค์ประกอบปัจจุบันเป็น-inอาร์เรย์ที่ระบุหรือไม่ สตริงผลลัพธ์ถูกทิ้งไว้บนไพพ์ไลน์

สตริงเหล่านั้นถูกห่อหุ้มด้วย parens และ-joinรวมเข้าด้วยกันเป็นสตริงใหม่ซึ่งจากนั้นจะถูกทิ้งไว้บนไพพ์ไลน์และโดยปริยายWrite-Outputในตอนท้ายจะพิมพ์ผลลัพธ์ เนื่องจากเรามี`nอยู่ในสตริงจึงถูกแปลงเป็นบรรทัดใหม่โดยอัตโนมัติเมื่อพิมพ์

ต้องการ v3 + สำหรับ-inผู้ปฏิบัติงาน มีพื้นที่ต่อท้ายในแต่ละบรรทัดซึ่งก็โอเคตามรายละเอียดการท้าทาย

ตัวอย่าง

PS C:\Tools\Scripts\golfing> .\now-i-know-my-abc.ps1
A, B, C, D, E, F, G, 
H, I, J, K, L, M, N, O, P, 
Q, R, S, 
T, U, V, 
W, X, Y, Z. 

1
ช่วงเวลาสิ้นสุดจะหายไป
Downgoat

ไม่ควรมีเครื่องหมายจุลภาคในตอนท้ายของสี่บรรทัดแรกหรือไม่
Neil

@Neil น้ำเกรวี่ที่ดี ฉันจะลบสิ่งนี้จนกว่าฉันจะสามารถเข้าใจสเป็คได้
AdmBorkBork

2

PHP, 62 ไบต์

<?=preg_filter("# ([HQTW])#","\n$1",join(", ",range(A,Z)));?>.

สำหรับการเปรียบเทียบ 87 ไบต์เท่านั้น

<?="A, B, C, D, E, F, G,\nH, I, J, K, L, M, N, O, P,\nQ, R, S,\nT, U, V,\nW, X, Y, Z.";

\nคุณสามารถบันทึกไบต์โดยใช้บรรทัดใหม่ที่เกิดขึ้นจริงในสถานที่ของ
อเล็กซ์ Howansky

ในขณะที่คุณได้รับอนุญาตให้เว้นวรรคต่อท้ายในแต่ละบรรทัดคุณสามารถบันทึกไบต์โดยปล่อยพื้นที่จาก regex นอกจากนี้คุณสามารถบันทึกไบต์โดยใช้ (เลิกใช้แล้วและลบใน 7.0) ereg_replace เนื่องจากจะให้คุณข้ามตัวคั่นใน regex ได้
user59178

@ user59178 ฉันสามารถบันทึก 3 ไบต์ แต่ฉันจะหลีกเลี่ยงสิ่งนี้ ใช่อนุญาตให้ใช้พื้นที่ต่อท้ายได้ ฉันสามารถเขียนเป็น regex "# (?=[HQTW])#"และสั้นแทนที่เป็น"\n"ไบต์เดียวกันและทำให้ชัดเจน หากต้องการใช้ฟังก์ชันที่เลิกใช้แล้วอาจทำให้ผู้เริ่มต้นสับสน และตัวแบ่งทางกายภาพสามารถตีความผิดในระบบอื่น ๆ แล้ว Unix คุณสามารถโพสต์ข้อความนี้เป็นคำพูดของคุณเอง
JörgHülsermann

2

MATL, 38 29 ไบต์

บันทึกแล้ว 9 ไบต์ด้วย @Luis!

1Y2X{', '&Zc46h1[CEII]I*11hY{

ลองออนไลน์!

คำอธิบาย

1Y2     % Push the upper-case alphabet to the stack
X{      % Break the character array into a cell array (similar to a list)
        % where each element is a letter
', '&Zc % Combine back into a string with ', ' between each element
46h     % Append '.' (via ASCII code) to the end of the string
1       % Push the number 1
[CEII]  % Push the array: [7, 9, 3, 3]
I*      % Multiply this array by 3: [21, 27, 9, 9]  
llh     % Append an 11 to this array: [21, 27, 9, 9, 11] 
Y{      % Break our comma-separated list of characters into groups of this size
        % Implicitly display the result

2

R, 146 ไบต์

L=LETTERS
f=function(x,y=""){paste(x,collapse=paste0(", ",y))}
cat(f(c(f(L[1:7]),f(L[8:16]),f(L[17:19]),f(L[20:22]),f(L[23:26])),"\n"),".",sep="")

คำอธิบาย:

LETTERSถูกกำหนดไว้ล่วงหน้าสำหรับตัวอักษรตัวพิมพ์ใหญ่ ฟังก์ชั่นสำหรับการเชื่อมโยงเวกเตอร์ x บนมีเพิ่มเติม(ใช้สำหรับการขึ้นบรรทัดใหม่) แมวถูกใช้ในขณะที่มันพิมพ์เป็นบรรทัดใหม่ ถูกเรียกบนตัวอักษรเพื่อจัดแถวและจากนั้นบนแถวอีกครั้งเพื่อจัดทำเอาต์พุตทั้งหมด
f,y
\nf

น่าจะเป็นกอล์ฟได้ - ฉันไม่ชอบการโทรหลายสายของ f ...


3
เอาต์พุตดิบมีความยาวเพียง 77 ไบต์ การพิมพ์ที่โดยตรงอาจจะสั้น ...
ลินน์

@ ลินน์ฉันรู้ แต่ที่นี่ฉันเห็นความเป็นไปได้ของการเล่นกอล์ฟ
pajonk


2

Julia, 71 ไบต์

f()=join(join.(['A':'G','H':'P',"QRS","TUV","WXYZ"],[", "]),",\n")*"."

ต้องการ 0.5 หรือดีกว่าสำหรับการออกอากาศ .()


ในอีกด้านหนึ่งปัจจุบันนี้ไม่มีระยะเวลาต่อท้ายและไม่จำเป็นต้องมีprint/ ฟังก์ชั่นการกำหนด? ในทางกลับกันการไม่บันทึกjoinตัวแปรจะบันทึกไบต์
Sp3000

WRT ไม่ดีของฉันหายไป "" joinและขอบคุณสำหรับตัวชี้บน ฉันพลาดไปแล้ว การรันโปรแกรมจะส่งคืนสตริง โปรแกรมส่งคืนสตริงที่ถูกต้องหรือไม่? (หรือเป็นเพียงฟังก์ชั่นที่อนุญาตให้ส่งคืนสิ่งต่าง ๆ ให้นับเป็นเอาต์พุตหากf()=เป็นเช่นนั้นสั้นกว่าprint())
Lyndon White

แน่นอนf()=หรือ()->ไม่เป็นไร - ฉันคิดว่าความคิดคือฟังก์ชั่นนั้นสามารถกำหนดได้และสามารถทำงานได้หลายครั้งและในทางตรงกันข้ามนี่จะเป็นข้อมูลโค้ด
Sp3000

2

Cheddar, 57 ไบต์

->(65@"90).sub(/[GPSV]/g,"$0
").sub(/[^Z\n]/g,"$0, ")+"."

ลองออนไลน์! มันไม่สวยงามเหรอ? มันเป็นรูปสี่เหลี่ยมผืนผ้าที่ดี

การทดแทน regex สองครั้ง (65@"90)เป็นตัวอักษรตัวพิมพ์ใหญ่.sub(/[GPSV]/g,"$0\n")แทนที่GPSVด้วยตัวเองและ"\n", .sub(/[^Z\n]/g,"$0, ")แทนที่การขึ้นบรรทัดใหม่และไม่ใช่Zตัวอักษรที่มีตัวเองและ", "และเพิ่มเป็นครั้งสุดท้าย".".


1
เทคนิคที่ดีและงานที่ดี outgolfing Downgoat;)
ETHproductions

2

Japt, 24 ไบต์

;B¬qJ+S r"[HQTW]"@R+XÃ+L

ทดสอบออนไลน์!

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

;                        // Reset various variables. B is set to "ABC...XYZ", J is set to ",", and L is set to ".".
 B¬                      // Take the uppercase alphabet and split into chars.
   qJ+S                  // Join with ", ".
        r"[HQTW]"        // Replace each H, Q, T, or W with
                 @R+XÃ   //   a newline plus the character.
                      +L // Append a period to the result.
                         // Implicit: output last expression

2

Java, 116 109 105 104

String f(){String s="";for(char c=65;c<91;)s=s+c+(c>89?46:',')+("GPSV".indexOf(c++)<0?' ':10);return s;}

Ungolfed:

String f() {
  String s = "";
  for (char c = 65; c < 91;) {
    s = s + c
      + (c > 89 ? 46 : ',')
      + ("GPSV".indexOf(c++) < 0 ? ' ' : 10);
  }
  return s;
}

คุณสามารถตีกอล์ฟได้ถึง 7 ไบต์: ทั้งสาม||ถึง|(-3); เปลี่ยนc==90เป็นc>89(-1); เปลี่ยน'.'เป็น46(-1); และเปลี่ยน'\n'เป็น10(-2)
Kevin Cruijssen

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

2
@KevinCruijssen ขอบคุณ ถ้าฉันมีกาแฟในตัวฉันเพียงพอฉันจะจำได้ว่าต้องอัพเดทตัวเอง

1
2 ไบต์เพิ่มเติมได้ที่: แทน"GPSV".contains(""+c) c==71|c==80|c==83|c==86
TNT

1
@TNT ฉันสามารถทำได้ดีขึ้นเล็กน้อย ฉันรู้ว่าส่วนนั้นสามารถปรับปรุงได้ขอบคุณสำหรับการผลักดันในทิศทางที่ถูกต้อง


1

เรติน่า 43 ไบต์


Z
{2`
$`
}T01`L`_L
.
$&, 
[HQTW]
¶$&
, $
.

ขึ้นบรรทัดใหม่เป็นสำคัญ ลองออนไลน์!

นี่เป็นครั้งแรกที่ฉันใช้ Retina ดังนั้นเคล็ดลับการเล่นกอล์ฟจะได้รับการชื่นชม ...


1

Pyth, 25 ไบต์

+Pjmj\ dc*G\,j94092 23)\.

โปรแกรมที่พิมพ์ผลลัพธ์ไปยัง STDOUT

ลองออนไลน์

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

+Pjmj\ dc*G\,j94092 23)\.  Program. Input: none
          G                Yield string literal'abcdefghijklmnopqrstuvwxyz'
         * \,              Cartesian product of that with ',', yielding a list of
                           characters with appended commas
             j94092 23)    Yield the integer 94092 in base-23, giving [7, 16, 19, 22]
        c                  Split the comma-appended character list at those indices
   mj\                     Join each element of that on spaces
  j                        Join that on newlines
 P                         All but the last element of that, removing trailing ','
+                      \.  Append '.'
                           Implicitly print
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.