Sekarang saya tahu ABC saya, tidakkah Anda akan datang dan bermain golf dengan saya?


46

Tulis sebuah program atau fungsi yang menampilkan teks persis ini, tidak peka huruf besar-kecil:

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.

(Berdasarkan lagu alfabet yang banyak dipelajari anak-anak Amerika untuk membantu menghafal alfabet, meskipun diedit untuk lebih kompresif.)

Output harus terlihat persis sama seperti di atas (sekali lagi, kasus-sensitif), tetapi mungkin berisi spasi pada setiap baris dan / atau trailing baris baru. Perhatikan periode di akhir.

Ini adalah kode-golf, jadi kode terpendek dalam byte menang.


4
Untuk bahasa berbasis regex pertimbangkan pencarian lebar 0 .../(?=[HQTW])/
Magic Octopus Mm

29
Saya pikir itu H, I, J, K, LMNO, P?
Reinstate Monica

7
Bukankah seharusnya baris terakhir diakhiri dengan "Y dan Z."?
KM.

@ KM. Ini dibahas di kotak pasir , dan kami memutuskan untuk tetap menggunakan versi ini untuk membuat tantangannya tidak terlalu rumit.
ETHproduk

6
Golf sepertinya membosankan. Jangkrik lebih baik.
Manoj Kumar

Jawaban:


15

Vim, 42 , 40 penekanan tombol / byte

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

Terima kasih untuk Lynn dan jawaban vimnya yang luar biasa atas tip untuk mengambil alfabet dari bantuan.

Terima kasih kepada RomanGräf karena telah menghemat dua byte!

Penjelasan:

: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

Kemudian, kita pindahkan ujung baris dengan $, ubah kembali karakter dengan chdan masukkan titik.


2
Anda tidak boleh mengonversi menjadi huruf besar. OP mengatakan "teks persis ini, tidak peka huruf".
Roman Gräf

@ RomanGräf Terima kasih atas tipnya!
DJMcMayhem

Ha! Mendapatkan alfabet dari bantuan vim itu jenius! Apakah Anda tahu itu atau Anda mencarinya untuk tantangan ini?
Christian Rondeau

3
@christianRondeau saya tidak menemukan itu. Lynn melakukannya dalam jawaban ini
DJMcMayhem

@ RomanGräf +1 untuk menggunakan tidak boleh
FantaC

12

05AB1E , 16 byte

Kode

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

Penjelasan:

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.

Menggunakan pengkodean CP-1252 . Cobalah online!



11

JavaScript (ES6), 66 65 byte

Mengalahkan @Neil tidak mungkin ... Itu sebabnya saya melakukannya. :-)

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

Golf 1 byte berkat trik dari @LevelRiverSt . Menggunakan String.fromCharCodelebih lama 7 byte:

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

Bagaimana itu bekerja

Ini secara rekursif menghasilkan masing-masing karakter dari alfabet dari ake y, menggunakan .toString(). Tanda koma ditambahkan setelah setiap huruf, ditambah baris baru jika 9568512>>i-9&11, atau spasi sebaliknya. Ketika rekursi melewati 34, yaitu z, fungsi hanya kembali "z.".


Tunggu, bagaimana ini — penjelasan, tolong? : 3
Downgoat

10

Python 2.7, 67 66 63 byte

a=65;exec"print'%c'%a+',.'[a>89]+'\\n'[a%42%39%9^2:],;a+=1;"*26

Dennis menyimpan satu byte.


Menggunakan execbukannya forharus menyimpan byte.
Dennis

6

Jelly , 19 18 byte

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

Terima kasih kepada @Adnan karena bermain golf 1 byte!

Cobalah online!

Bagaimana itu bekerja

Ø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 detik?
Sial

5

JavaScript (ES6), 80 74 byte

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

Mungkin mungkin untuk mempersingkat ini dengan atob / btoa jika Anda dapat mengetahui cara menggunakan pengkodean ISO-8859-1. Sunting: Disimpan 6 byte berkat @RickHitchcock.


1
@RickHitchcock Ya, saya baru sadar setelah membaca jawaban PHP.
Neil

@RickHitchcock yang Anda inginkan .join`, `? Masukkan backslash sebelum backticks. (Ya, penurunan komentar berbeda, huh ...)
Neil

5

Pyke, 23 19 17 byte

G\,J\.+2cu  /P

Coba di sini!

G\,J\.+        -    ",".join(alphabet)+"."
       2c      -   split(^, size=2)
            /  -  split_sized(^, V)
         u     -   yield list [7,9,3,3] (actual bytes `u%04%07%09%03%03`)
             P - print(^)

5

R, 83 71 byte

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

Cobalah online!

Membuat matriks 3 baris (satu dengan huruf, satu dengan koma dan lainnya dengan spasi atau baris baru).

Sunting : Terima kasih Billywob!


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

Terima kasih! Itu banyak membantu! Menggunakan [-26]on LETTERSsecara langsung menyimpan byte lain.
plannapus

4

CJam, 26 byte

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

Penerjemah online

'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 byte

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

Empat baris pertama masing-masing memiliki ruang tambahan, dan program mengasumsikan sel 8-bit. Cobalah online!

(Menangani baris terakhir itu rumit ...)


4

Perl, 37 byte

Kredit ke @Dom Hastings untuk solusi ini (3 byte lebih pendek dari saya, lihat di bawah).

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

Jalankan dengan -E(atau -M5.010) bendera:

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

Versi saya sebelumnya, 3 byte lebih lama (total 40 byte):

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

1
Pendekatan yang sedikit berbeda (masih menggunakan regex ...) untuk 37 byte:say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
Dom Hastings

@HomHastings Bagus, Bagus sekali. Dan lebih indah memiliki satu pernyataan daripada tiga! ;-)
Dada

4

JavaScript (ES6), 66 64 byte

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

Regex cocok dengan karakter tetapi bukan carriage return, jadi, dengan menggunakan regex replace, saya dapat menambahkan "," ke setiap karakter.

Sunting: Dihapus 2 karakter berkat ETHProductions


1
Saya tidak tahu mengapa pegolf JS lainnya tidak pergi untuk solusi ini terlebih dahulu. Di sini, dapatkan upvote.
Mama Fun Roll

1
Sial, bagus! Saya pikir Anda dapat menghapus parens di regex jika Anda mengubah $1ke $&.
ETHproduk

3

Cheddar, 70 byte

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

Sepertinya ini tidak menjadi lebih pendek dari ini. Saya telah membuat versi lain dari ini yang menggunakan metode yang cukup menarik tetapi ini adalah yang terpendek

Cobalah online!

Penjelasan

->                        // 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

The @"operator yang digunakan untuk menghasilkan string yang berkisar. Ini menghasilkan string mulai dari kode char kiri ke kode char kanan.

Misalnya, 65adalah kode char untuk Adan 90untuk Z. Melakukan 65 @" 90akan menghasilkan A sampai Z atau alfabet.


3

C, 112 102 81 byte

Terima kasih kepada 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)‌​;}

Solusi yang bagus. Anda dapat menyimpan beberapa byte karena 44 adalah 1 kurang dari ',' dan 46 1 kurang dari '.'
cleblanc

Tidak perlu mendeklarasikan int dan Anda dapat membuat int implisit juga, ini hanya 101 bytei,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

Anda bisa mendapatkan pendekatan ini turun menjadi 82 bytes: i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}. Perhatikan bahwa Anda dapat menempel sepenuhnya apa pun di antara ?:operator ternary, bahkan beberapa ekspresi yang dipisahkan oleh koma (ini mengevaluasi ke yang terakhir.)
Level River St

3

Brainfuck, 157 byte

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

Cobalah online


3

Ruby, 56 54 byte

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

Baris pertama berakhir dengan baris baru literal.

Sunting: menyimpan dua byte dengan mengganti 'A'..'Y'dengan ?A..?Y.


3

Vim, 32 byte

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

Meninggalkan garis kosong di bagian akhir, yang diizinkan, tapi aneh karena kikuk ini. Lebih buruk lagi, saya mengakhiri dalam mode insert. Saya telah melihat beberapa orang lain melakukannya di sini, jadi saya kira itu diperbolehkan? Rasanya kotor.

  • 26o<C-V><C-V>64,<Esc>: Yang pertama <C-V>membuat yang kedua menyisipkan secara harfiah. The <C-V>64s daun ini dalam buffer akan berubah menjadi poin kode ASCII, kemudian ke huruf. Koma sudah masuk.
  • r.: Tidak akan pernah sampai di ujung lagi, begitu juga .sekarang.
  • V{g<C-A>: Menggunakan peningkatan visual untuk mengubah semua 64huruf menjadi poin kode ASCII dari huruf kapital.
  • 8Jj9Jj3Jj.j4J: Garis arbitrer bergabung. Yang pertama 8Jbukannya 7Jkarena kita berurusan dengan baris kosong. Diulang 3Js memenuhi syarat untuk sebuah titik ulangi.
  • cH<C-R>": Orang biasanya menganggap i<C-R>sebagai mode insert mode, tapi ini lebih seperti mode mode makro. Hal-hal seperti <C-V>65akan berjalan seolah-olah diketik, dan ditafsirkan sebagai titik kode desimal. Ini meninggalkan garis ekstra (diizinkan) di ujungnya, dan tetap dalam mode sisipkan.

4
jika Anda memiliki masalah dengan suatu kebijakan (atau ketiadaan kebijakan), angkat saja pada meta, bukan dalam jawaban.
Mego

2

PowerShell v3 +, 60 78 67 byte

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

BAIK. Saya sudah benar-benar membaca, mengerti, dan mengikuti spesifikasi kali ini. Janji. : D

Mengambil array 65..90dan mengulangi setiap elemen |%{...}. Setiap iterasi, kami membuat string baru menggunakan penggabungan, pengindeksan, dan multiplikasi.

Pertama, kami mengambil nomor saat ini dan charmelemparkannya untuk menjadikannya surat ASCII. Itu digabungkan dengan karakter lain, berdasarkan pengindeksan ke string '.,'apakah kita setuju 90atau tidak (yaitu, untuk menghitung Z.sementara semua sisanya adalah koma). String tersebut digabungkan dengan " "untuk memisahkan spasi huruf, dan string perkalian "`n"berdasarkan pada nilai Boolean untuk apakah elemen saat ini adalah -inarray yang ditentukan (yaitu, apakah kita perlu menggabungkan pada karakter baris baru). String yang dihasilkan ditinggalkan di pipa.

String-string itu dienkapsulasi dalam parens, dan -joindiedarkan bersama menjadi string baru, yang kemudian juga ditinggalkan di pipeline dan tersirat Write-Outputpada akhirnya mencetak hasilnya. Karena kita memiliki `nstring, maka secara otomatis dikonversi ke baris baru setelah dicetak.

Membutuhkan v3 + untuk -inoperator. Memiliki ruang tambahan di setiap baris, yang OK untuk spesifikasi tantangan.

Contoh

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
Periode di akhir tidak ada.
Downgoat

Bukankah seharusnya ada koma di akhir empat baris pertama?
Neil

@Neil Saus yang enak. Saya akan menghapus ini sampai saya benar-benar dapat memahami spesifikasi.
AdmBorkBork

2

PHP, 62 Bytes

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

hanya untuk perbandingan 87 Bytes

<?="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.";

Anda dapat menyimpan byte dengan menggunakan baris baru yang sebenarnya sebagai ganti \n.
Alex Howansky

Karena Anda diperbolehkan mengekstrasi spasi pada setiap baris, Anda dapat menyimpan byte dengan menjatuhkan spasi dari regex. Anda juga dapat menyimpan byte dengan menggunakan ereg_replace (usang dan dihapus di 7.0) karena memungkinkan Anda melewati pembatas di regex.
user59178

@ user59178 Saya bisa menghemat 3 Bytes tetapi saya akan menghindari ini. Ya, ruang trailing diperbolehkan. Saya bisa menulis sebagai regex "# (?=[HQTW])#"dan pendekkan ganti ke "\n"byte yang sama dan membuatnya lebih jelas. Untuk menggunakan fungsi yang sudah usang dapat membingungkan pemula. Dan istirahat fisik dapat diartikan salah pada sistem lain kemudian Unix. Anda dapat mempostingnya sebagai saran Anda sendiri.
Jörg Hülsermann

2

MATL, 38 29 byte

9 byte disimpan berkat @Luis!

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

Cobalah secara Online!

Penjelasan

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 byte

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="")

Penjelasan:

LETTERSsudah ditentukan sebelumnya untuk huruf besar.
The ffungsi untuk concatenating vektor x pada ,dengan tambahan y(yang digunakan untuk baris baru).
Kucing adalah yang digunakan saat mencetak \nsebagai baris baru. fdipanggil pada huruf untuk membentuk baris dan kemudian pada baris lagi untuk membentuk seluruh output.

Mungkin golf - saya tidak suka beberapa panggilan ...


3
Output mentah hanya 77 byte. Mencetak yang secara langsung mungkin lebih pendek ...
Lynn

@ Lynn, saya tahu, tapi di sini saya melihat beberapa kemungkinan bermain golf.
pajonk

2

CJam, 31 byte

'[,65>", "*7933Ab{3*/(\:+}%N*'.

Penjelasan:

'[,65>                             push uppercase alphabet
      ", "*                        ", " between all letters
           7933Ab                  push [7 9 3 3]
                 {3*/(\:+}%        slices of lengths 21, 27, 9, 9
                           N*'.    join slices with newlines, add final "."

Cobalah online


2

Julia, 71 byte

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

Membutuhkan 0,5 atau lebih baik untuk penyiaran .()


Di satu sisi, saat ini ini tidak memiliki periode trailing, dan tidakkah itu memerlukan printdefinisi fungsi? Di sisi lain, tidak menyimpan joinke variabel menghemat satu byte.
Sp3000

Wrt buruk saya melewatkan ".", Dan terima kasih atas penunjuknya join. Saya salah menghitung. Menjalankan program mengembalikan string. Bukankah program mengembalikan string sebagai hasil yang valid? (Atau apakah itu hanya fungsi yang diizinkan untuk mengembalikan hal-hal yang dihitung sebagai output. Jika demikian, f()=lebih pendek daripada itu print())
Lyndon White

Tentu, f()=atau ()->baik-baik saja - saya pikir idenya adalah bahwa fungsi dapat ditentukan dan dapat dijalankan beberapa kali, dan sebaliknya ini akan menjadi potongan kode.
Sp3000

2

Cheddar, 57 byte

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

Cobalah online! Bukankah itu cantik? Itu adalah persegi panjang yang bagus.

Dua penggantian regex. (65@"90)adalah huruf besar, .sub(/[GPSV]/g,"$0\n")menggantikan GPSVdengan dirinya sendiri dan "\n", .sub(/[^Z\n]/g,"$0, ")menggantikan semua bukan baris baru dan Zkarakter dengan dirinya sendiri dan ", ", dan "."menambahkan final ..


1
Teknik yang bagus, dan pekerjaan yang bagus mengalahkan Downgoat;)
ETHproduk

2

Japt, 24 byte

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

Uji secara online!

Bagaimana itu bekerja

;                        // 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

Jawa, 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;}

Tidak Disatukan:

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

Anda dapat membuatnya golf dengan 7 byte: Ketiganya ||menjadi |(-3); berubah c==90menjadi c>89(-1); berubah '.'menjadi 46(-1); dan mengubah '\n'ke 10(-2).
Kevin Cruijssen

@KevinCruijssen terima kasih, saya mencoba menggunakan desimal tetapi sepertinya jika saya mengganti kedua konstanta karakter di ternary itu mengubah tipe ekspresi menjadi integer, yang memecahkannya. Mengubah satu konstanta berhasil dan memeras beberapa byte.

2
@KevinCruijssen terima kasih. Jika saya memiliki cukup kopi di dalam diri saya, saya akan ingat untuk memperbaruinya sendiri.

1
2 byte lebih banyak: "GPSV".contains(""+c)bukannya c==71|c==80|c==83|c==86.
TNT

1
@TNT saya bisa melakukan sedikit lebih baik. Saya tahu bagian itu dapat ditingkatkan, terima kasih atas dorongan ke arah yang benar.

1

q, 46 byte

-1@'(", "sv/:0 7 16 19 22_,:'[.Q.A]),'",,,,.";

1

Retina, 43 byte


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

Memimpin baris baru adalah signifikan. Cobalah online!

Ini adalah pertama kalinya saya menggunakan Retina, jadi setiap kiat bermain golf dihargai ...


1

Pyth, 25 byte

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

Program yang mencetak hasilnya ke STDOUT.

Cobalah online

Bagaimana itu bekerja

+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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.