Naiki Reading, Jika Anda lulus, kumpulkan $ 200

39

Dewan Monopoli

Untuk tantangan kode-golf ini, kami akan membangun Monopoly permainan papan.

Aturan:

  • Jangan masukan.
  • Keluarkan papan 11x11 di mana setiap karakter ASCII yang membentuk papan adalah huruf pertama dari setiap ruang versi AS dari papan Monopoli.
  • Karakter harus dipisahkan oleh spasi.
  • Go harus dimulai di kanan bawah.

String yang tepat untuk diproduksi adalah

F K C I I B A V W M G 
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G 

Perhatikan bahwa dari kanan bawah ke kiri bawah kotak adalah sebagai berikut:

G --> Go
M --> Mediterranean Avenue
C --> Community Chest
B --> Baltic Avenue
I --> Income Tax
...
J --> Jail

Sunting Wow! kalian benar-benar menyukai yang ini! :)

jacksonecac
sumber
7
Saya tidak bermaksud menjadi orang yang ngotot, tapi ... bagaimana cara seseorang meloloskan Go sambil maju ke Boardwalk?
Sp3000
4
Jika Anda berada di jalan lintas :)
jacksonecac
8
Yang mana Anda tidak bisa mendapatkan kartu kesempatan jika Anda berada di boardwalk :(
jacksonecac
27
Saya gagal Anda semua
jacksonecac
3
Apakah spasi tambahan diperbolehkan?
Adnan

Jawaban:

36

Retina , 74 byte


FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG
S_`(._.)
_
9$*
\B

1

Baris ketiga ke terakhir dan terakhir harus berisi satu spasi.

Cobalah online!

Penjelasan


FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG

Ini menggantikan input (kosong) dengan string di baris kedua.

S_`(._.)

Ini adalah tahap split, yang membagi string di sekitar pertandingan regex (._.)(yaitu, setiap tiga karakter dengan _di tengah). Alasan kami menempatkan seluruh regex dalam sebuah grup adalah karena tahapan yang dibagi juga mengembalikan hasil dari menangkap grup. Misalnya membelah abcdsekitar bcmemberi [a, d], tapi membelah sekitar b(c)memberi [a, c, d]. Dengan cara ini kita mendapatkan semua ._.bagian pada garis yang terpisah tetapi juga bagian 11-karakter di awal dan akhir. Kami menggunakan _opsi untuk menghilangkan hasil kosong antara setiap ._.pertandingan. Hasilnya adalah ini:

FKCIIBAVWMG
N_P
T_N
C_C
S_P
P_S
V_C
S_P
E_L
S_B
JCVCORIBCMG

Selanjutnya kami memproses garis bawah:

_
9$*

Ini menggantikan setiap garis bawah dengan sembilan 1s. Alasan kami menggunakan 1s di sini daripada spasi segera adalah karena itu membuatnya lebih mudah untuk memasukkan ruang padding berikutnya.

\B

Ingatlah bahwa ada spasi di baris kedua. Ini memasukkan ruang di setiap posisi yang bukan batas kata, yaitu di mana-mana kecuali di awal dan akhir baris.

1

Dan akhirnya, kami mengganti semua 1itu dengan spasi juga.

Martin Ender
sumber
1
Pekerjaan yang baik! Itu cepat!
jacksonecac
39
+1 untuk (._.).
Destructible Lemon
^ baru saja akan mengatakan bahwa ahha
jazzboy
25

Jelly , 44 byte

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’ḃ23ṣ4ịØAz⁶ṙ1G

Cobalah online!

Ide

Jika kami menghapus setiap kolom kedua dan mengubah baris dengan kolom, kami mendapatkan papan berikut.

FNTCSPVSESJ
K         C
C         V
I         C
I         O
B         R
A         I
V         B
W         C
M         M
GPNCPSCPLBG

Sekarang, kita dapat memutar setiap kolom satu unit ke kanan, memindahkan semua ruang yang tersisa ke kanan.

JFNTCSPVSES
KC         
CV         
IC         
IO         
BR         
AI         
VB         
WC         
MM         
GGPNCPSCPLB

Kemudian, kita menghapus ruang yang tersisa dan mengganti linefeeds dengan huruf D .

JFNTCSPVSESDCKDVCDCIDOIDRBDIADBVDCWDMMDGGPNCPSCPLB

Sekarang, kami mengganti setiap huruf dengan indeks berbasis 1 di alfabet.

10  6 14 20  3 19 16 22 19  5 19  4  3 11  4 22  3  4  3  9  4 15  9  4 18
 2  4  9  1  4  2 22  4  3 23  4 13 13  4  7  7 16 14  3 16 19  3 16 12  2

Kemudian, kami mengonversi larik digit ini dari bijective base 23 ke integer.

54580410997367796180315467139871590480817875551696951051609467717521

Sekarang, kami mengonversi bilangan bulat ini ke basis bijective 250 .

  2 232  57  78 163  84 132  77 228 144  27 100  77 176 195
 42   9  55  83 167 155   1 210 125 211   4 232 119  20

Akhirnya, kami menggunakan angka ini untuk mengindeks ke halaman kode Jelly .

£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ

Ini adalah data yang disandikan yang akan kami sertakan dalam program ( 29 byte ). Untuk menghasilkan output yang diinginkan, kita hanya perlu membalikkan langkah-langkah di atas.

Kode

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’ḃ23ṣ4ịØAz⁶ṙ1G  Main link. No arguments.

“£ċ9NɲT⁴MỵƇñdMỊḞ*µ7Sʂɓ¢Ż}ạ¥ċwÞ’               Convert the string from bijective
                                              base 250 (using the indices in
                                              Jelly's code page) to integer.
                               ḃ23            Convert that integer to bijective
                                              base 23.
                                  ṣ4          Split the resulting array at
                                              occurrences of 4.
                                    ịØA       Replace the remaining digits in the
                                              resulting 2D array with the
                                              corresponding uppercase letters.
                                       z⁶     Zip/transpose rows and columns,
                                              padding shorter rows with spaces.
                                         ṙ1   Rotate the rows one unit down.
                                           G  Grid; join rows by spaces, columns
                                              by linefeeds.
Dennis
sumber
5
Terima kasih untuk penjelasan rinci. Itu selalu menarik untuk melihat proses di balik jawaban untuk pertanyaan kode golf. :)
XtraSimplicity
11
Code Golf - di mana sangat normal untuk melihat angka di base 250 dan base 23.
corsiKa
Teknik kompresi yang bagus. Mengapa transposing diperlukan?
ETHproduksi
@ ETHproductions Jelly tidak memiliki atom padding, jadi saya bisa secara manual mengisi semua baris dengan spasi dengan panjang yang sama atau menggunakan zip diad ( z) dengan filler.
Dennis
16

05AB1E , 48 47 byte

Terima kasih kepada Emigna karena telah menghemat satu byte!

•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»

Penjelasan:

Pertama kompresi. •(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•adalah versi terkompresi dari nomor berikut:

120860198958186421497710412212513392855208073968557051584380118734764403017

Setelah itu, ini dikonversi menjadi basis 33 , yang menghasilkan string berikut:

FKCIIBAVWMGN0PT0NC0CS0PP0SV0CS0PE0LS0BJCVCORIBCMG

Nol diganti dengan 9 spasi , menggunakan kode berikut ¾9ð×:. Setelah itu, kita Smasukkan string menjadi karakter dan mengirisnya menjadi beberapa bagian 11 elemen (selesai dengan 11ô). Kami mendapatkan array 2 dimensi berikut:

[['F', 'K', 'C', 'I', 'I', 'B', 'A', 'V', 'W', 'M', 'G'], 
 ['N', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['T', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'N'], 
 ['C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'C'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['P', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'S'], 
 ['V', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'C'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'P'], 
 ['E', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'L'], 
 ['S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'B'], 
 ['J', 'C', 'V', 'C', 'O', 'R', 'I', 'B', 'C', 'M', 'G']]

Kami mem-gridify array ini dengan »dan menampilkannya secara implisit.

Menggunakan pengkodean CP-1252 . Cobalah online!

Adnan
sumber
3
Mengompresi dengan 0 bukannya D menghemat byte•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»
Emigna
@ Emigna Ah, itu pintar! Terima kasih :)
Adnan
12

Python 2, 89 byte

l='%s '*11+'\n'
print(l+'%s%20s\n'*9+l)%tuple("FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG")

Membuat templat

? ? ? ? ? ? ? ? ? ? ? 
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
?                   ?
? ? ? ? ? ? ? ? ? ? ? 

untuk menggantikan dalam huruf melalui pemformatan string. Templat menggunakan dua jenis garis:

  • Garis luar l 11 salinan letter-plus-space, lalu baris baru. Ini juga digunakan untuk baris pertama dan terakhir. Ini memiliki ruang trailing.
  • Garis dalam sebuah karakter, kemudian karakter yang didahului oleh 19 karakter ruang padding, kemudian baris baru. Ini disalin 9 kali untuk garis tengah.

Python 3.5 dapat menyimpan byte dengan tuple unpacking (*'...',).

Tidak
sumber
1
Beralih ke Python 3.5 akan menghemat satu byte.
Dennis
9

PowerShell v2 +, 131 123 114 110 99 byte

'F K C I I B A V W M G
N0P
T0N
C0C
S0P
P0S
V0C
S0P
E0L
S0B
J C V C O R I B C M G'-replace0,(" "*19)

Ini hanya string literal dengan baris baru ditempatkan pada pipa, dengan sedikit -replacedi ujungnya untuk mengubah 0menjadi 19spasi. Baris pertama dan terakhir hanya kata demi kata. Dengan hanya 10 ruang dan sedikit pengulangan, tidak ada cukup ruang untuk bermain golf. String ini ditinggalkan di jalur pipa, dan output melalui implisit Write-Outputterjadi pada penyelesaian program.

PS C:\Tools\Scripts\golfing> .\take-a-ride-on-reading.ps1
F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G
AdmBorkBork
sumber
9

Javascript ES6 REPL , 105 102 101 byte

Tidak banyak yang menarik terjadi di sini. Rekatkan di konsol untuk melihat hasil yang diinginkan

Disimpan 3 byte berkat @Arnauld
Disimpan 1 byte lagi berkat @Neil

`FKCIIBAVWMG
N P
T N
C C
S P
P S
V C
S P
E L
S B
JCVCORIBCMG`.replace(/.( ?)/g,`$& `+`$1`.repeat(17))

Bassdrop Cumberwubwubwub
sumber
Saya rasa REPL tidak diizinkan.
NoOneIsHere
1
Saya berhasil mencukur byte lain. Ganti 1s dengan spasi dan gunakan regexp ini sebagai gantinya:.replace(/.( ?)/g,`$& `+`$1`.repeat(17))
Neil
Cara berbeda untuk mengurangi byte lain adalah dengan mengganti 1s dengan spasi dan gunakan fungsi ini sebagai gantinya:a=>a-1?a.repeat(18):a+' '
ETHproduksi
@Neil terima kasih, cintai pendekatan Anda!
Bassdrop Cumberwubwubwub
7

/// , 100 98 byte

/s/    //p/ssss   //q/pC
SpP
//!/ C /F K!I I B A V W M G 
NpP
TpN
CqPpS
VqEpL
SpB
J!V!O R I B!M G 

Cobalah online!

Untuk beberapa alasan misterius, sepertinya ada spasi setelah G . Tanpa mereka, kode saya akan menjadi 96 byte.

Berkat 42545 (ETHproductions) dan 56258 (daHugLenny) untuk mengurangi masing-masing 1 byte!

Erik the Outgolfer
sumber
@ EHProduk Tautan yang salah mungkin? Saya tidak dapat menyimpan byte seperti itu.
Erik the Outgolfer
Bukankah ini 98 byte jika Anda menghapus spasi setelah Gs pada baris pertama dan terakhir?
Emigna
1
@Emigna Seluruh diskusi tentang ruang ekstra.
Erik the Outgolfer
1
@ Emigna saya tahu, tetapi output yang tepat mengandung mereka, jadi saya tidak akan menghapusnya.
Erik the Outgolfer
Sayang saya, coba ini .
ETHproduk
6

Turtlèd , 72 byte

"K C I I B A V W M G">"GPNCPSCPLBG">"G M C B I R O C V C J">"JSESVPSCTNF

Cobalah online

>memutar kura-kura, "foo"menulis string di grid. Terakhir "adalah elidable

Lemon dirusak
sumber
5

V , 75, 62 , 59 byte

iFKCIIBAVWMG
NPTNCCSPPSVCSPELSB
JCVCORIBCMG-ò9á lli
òÍ./& 

Cobalah online!

Karena codel ini berisi karakter non-ASCII, berikut adalah hexdump:

0000000: 6946 4b43 4949 4241 5657 4d47 0a4e 5054  iFKCIIBAVWMG.NPT
0000010: 4e43 4353 5050 5356 4353 5045 4c53 420a  NCCSPPSVCSPELSB.
0000020: 4a43 5643 4f52 4942 434d 471b 2df2 39e1  JCVCORIBCMG.-.9.
0000030: 206c 6c69 0af2 cd2e 2f26 20               lli..../& 

Penjelasan. Pertama, kita memasukkan teks berikut:

FKCIIBAVWMG
NPTNCCSPPSVCSPELSB
JCVCORIBCMG

Lalu, kita <esc>kembali ke mode normal. Pada titik ini, kursor berada pada baris ketiga pada baris terakhir G. Mudahnya, ada perintah untuk menempatkan kita di kolom pertama dari garis tepat di atas kursor. Perintah itu -. Kemudian, setelah kita berakhir di baris kedua (di N), kita menjalankan loop berikut:

ò9á lli
ò

Penjelasan:

ò           " Recursively:
 9á         "   Append 9 spaces
    ll      "   Move to the right twice. This will fail on the last time because there isn't a space to move into
      i     "   Enter a newline
ò           " End

Sekarang, buffer terlihat seperti ini:

FKCIIBAVWMG
N         P
T         N
C         C
S         P
P         S
V         C
S         P
E         L
S         B
JCVCORIBCMG

Sekarang kita menggunakan regex terkompresi untuk mengganti setiap karakter dengan karakter itu dan spasi. Itu Í./&bagiannya. Ini diterjemahkan ke vim regex berikut:

:%s/./& /g

Yang berarti:

:%          " On any line
  s/        " Substitute
    ./      " Any character with
      & /   " That same character and a space
         g  " Allow for multiple substitutions on the same line
DJMcMayhem
sumber
4

R, 149 146 byte

Tidak begitu mengesankan tetapi juga tidak yakin bagaimana ini akan golf. Mengeksploitasi pasteentah bagaimana adalah tebakan pertama saya. Bandingkan dengan teks mentah 241 byte.

x=strsplit("NTCSPVSESPNCPSCPLB","")[[1]];cat("F K C I I B A V W M G\n");for(i in 1:9)cat(x[i],rep("",18),x[i+9],"\n");cat("J C V C O R I B C M G")

R-biola

Billywob
sumber
4

Python 2, 108 byte

Sedikit berbeda dari jawaban python lainnya, tanpa menggunakan pengganti, hanya string yang bergabung.

print'\n'.join(map(' '.join,['FKCIIBAVWMG']+map((' '*9).join,zip('NTCSPVSES','PNCPSCPLB'))+['JCVCORIBCMG']))
TFeld
sumber
1
Saya tahu zip adalah jalan ke depan! Sudah hampir solusi yang sama ke 118 sebelumnya dan akan golf malam ini. Saya kehilangan peta. Kira Anda mengalahkan saya untuk itu. +1
ElPedro
4

Perl, 90 byte

Pendekatan yang cukup membosankan, tidak bisa memikirkan cara yang lebih baik untuk mengurangi ... Membutuhkan -Etanpa biaya tambahan. Menghasilkan ruang tambahan di akhir setiap baris. -2 byte terima kasih kepada @Dada !

say"FKCIIBAVWMG
NZP
TZN
CZC
SZP
PZS
VZC
SZP
EZL
SZB
JCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr

Pemakaian

perl -E 'say"FKCIIBAVWMG
NZP
TZN
CZC
SZP
PZS
VZC
SZP
EZL
SZB
JCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'
Dom Hastings
sumber
2 byte pendek (tapi pada dasarnya kode yang sama seperti yang Anda): perl -E 'say"FKCIIBAVWMG\nNZP\nTZN\nCZC\nSZP\nPZS\nVZC\nSZP\nEZL\nSZB\nJCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'. (Ganti \ndengan baris baru literal hingga 90).
Dada
@Dada Ahhh, jauh lebih bagus! Terima kasih!
Dom Hastings
"Jauh lebih baik" akan menemukan solusi 40 byte, tetapi terima kasih: D
Dada
4

Jolf, 72 byte

Ζ0ρ,ahtht"111"'.d?=H♣Q♣+."FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"wΖhζ♣

Ganti semua dengan \x05, atau coba di sini!

Ζ0ρ,ahtht"111"'.d?=H♣Q♣+."..."wΖhζ♣
Ζ0                                   ζ = 0
   ,ahtht"111"                       a box of width&height 11, with borders "1"
  ρ           '.d                    replace each char in that string with...
                 ?=H♣                 is it a space?
                     Q♣                if so, return two spaces.
                                      otherwise
                        ."..."         get the Nth member of this string
                              wΖhζ      where N = (++ζ) - 1
                       +          ♣      and add a space to the end

Ini memberikan string yang diinginkan.

Conor O'Brien
sumber
3

Java 7, 177 165 142 131 byte

String c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCGM".replace("_","         ").replace(""," ");}

-15 byte terima kasih kepada @BassdropCumberwubwubwub .
-11 byte terima kasih kepada @Numberknot .

Tidak digabungkan & kode uji:

Coba di sini.

class M{
  static String c(){
    return "FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCGM"
      .replace("_","         ").replace(""," ");
  }

  public static void main(String[] a){
    System.out.print(c());
  }
}

Keluaran:

F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G
Kevin Cruijssen
sumber
1
String c(){String s=" ";return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace(""," ").replace("_",s);}untuk 150 (perhatikan bahwa stackexchange menghilangkan spasi berlebihan)
Bassdrop Cumberwubwubwub
@BassdropCumberwubwubwub Umm .. ini hanya menghasilkan 3 spasi antara 'dinding vertikal', bukannya 19 .. Ini adalah ide dari kode Anda.
Kevin Cruijssen
Oleh karena itu catatan saya, harus ada lebih banyak ruang stetapi stackexchange menghapusnya. Inilah idenya , sekarang bahkan pada 142 byte
Bassdrop Cumberwubwubwub
@BassdropCumberwubwubwub Ah ok. Tidak tahu Anda berada di antara s=" ". Dalam hal ini memang lebih pendek. Dan .‌​replace(""," ").replace("_",s);bisa sebagai .replace("_",s).‌​replace(""," ");gantinya untuk -8 byte tambahan
Kevin Cruijssen
1
String c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace("_","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;").replace(""," ");}( 131 bytes )
Numberknot
3

Befunge, 120 byte

<v"FKCIIBAVWMG NPTNCCSPPSVCSPELSB $JCVCORIBCMG "
:<,*48 ,_v#-*48<
>1-:#v_\,>$52*, :48*-!#v_,54*
^,*84<         ^p19*88$<

Baris pertama memiliki string yang akan dicetak terbalik (sepertinya tidak, tetapi kode akan mundur pada baris itu). Baris kedua mencetak baris atas dan bawah. Baris ketiga dan sisi kiri dari baris keempat mencetak baris tengah, dan potongan kecil di kanan bawah melakukan hal yang menarik: memindahkan kursor kembali ke baris kedua untuk mencetak baris terakhir, tetapi setelah selesai, itu seri.

Seperti yang Anda lihat pada baris pertama, string dipisahkan oleh spasi untuk membedakan antara baris pertama, tengah, dan terakhir. Spasi dapat berupa hal lain, dan jika saya menggunakan karakter ASCII 0-9, saya bisa dengan mudah menyimpan 4 byte. $ Yang Anda lihat hanyalah karakter sampah yang harus ada di sana dan bisa diganti dengan apa pun kecuali ruang.


sumber
3

J, 77 73 byte

' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'{~_22}.\,0,.(*+/\),0=*/~5-|i:5

Perhatikan bahwa 43 byte, lebih dari setengah total, digunakan hanya untuk string ' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG' .

Penjelasan

Pertama, buat daftar

   |i:5
5 4 3 2 1 0 1 2 3 4 5
   5-|i:5
0 1 2 3 4 5 4 3 2 1 0

Kemudian buat tabel waktunya

   */~5-|i:5
0 0  0  0  0  0  0  0  0 0 0
0 1  2  3  4  5  4  3  2 1 0
0 2  4  6  8 10  8  6  4 2 0
0 3  6  9 12 15 12  9  6 3 0
0 4  8 12 16 20 16 12  8 4 0
0 5 10 15 20 25 20 15 10 5 0
0 4  8 12 16 20 16 12  8 4 0
0 3  6  9 12 15 12  9  6 3 0
0 2  4  6  8 10  8  6  4 2 0
0 1  2  3  4  5  4  3  2 1 0
0 0  0  0  0  0  0  0  0 0 0

Kemudian uji kesetaraan dengan nol

   0=*/~5-|i:5
1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1

Ratakan, temukan jumlah kumulatif, dan kalikan dengan elemen

   ,0=*/~5-|i:5
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
   +/\,0=*/~5-|i:5
1 2 3 4 5 6 7 8 9 10 11 12 12 12 12 12 12 12 12 12 12 13 14 14 14 14 14 14 14 14 14 14 15 16 16 16 16 16 16 16 16 16 16 17 18 18 18 18 18 18 18 18 18 18 19 20 20 20 20 20 20 20 20 20 20 21 22 22 22 22 22 22 22 22 22 22 23 24 24 24 24 24 24 24 24 24 24 25 26 26 26 26 26 26 26 26 26 26 27 28 28 28 28 28 28 28 28 28 28 29 30 31 32 33 34 35 36 37 38 39 40
   (*+/\),0=*/~5-|i:5
1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 0 0 0 0 0 0 13 14 0 0 0 0 0 0 0 0 0 15 16 0 0 0 0 0 0 0 0 0 17 18 0 0 0 0 0 0 0 0 0 19 20 0 0 0 0 0 0 0 0 0 21 22 0 0 0 0 0 0 0 0 0 23 24 0 0 0 0 0 0 0 0 0 25 26 0 0 0 0 0 0 0 0 0 27 28 0 0 0 0 0 0 0 0 0 29 30 31 32 33 34 35 36 37 38 39 40

Kemudian gabungkan dengan nol, pisahkan ke dalam daftar panjang 22, letakkan kepala setiap daftar, dan gunakan nilai sebagai indeks dalam string ' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'

   ' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'{~_22}.\,0,.(*+/\),0=*/~5-|i:5
F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G
mil
sumber
Yang terbaik yang saya dapat menggunakan kompresi string generik adalah 90 byte:(' ',@,.~]);._1';FKCIIBAVWMG;N_P;T_N;C_C;S_P;P_S;V_C;S_P;E_L;S_B;JCVCORIBCMG'rplc'_';9#' '
Conor O'Brien
@ ConorO'Brien Ya, sulit untuk kompresi string golf dalam J ketika bahasa lain memiliki kamus dan kompresi builtin.
mil
@ ConorO'Brien Saya mencoba bermain golf ide Anda sedikit lebih banyak dan mendapatkannya hingga 76 byte_11,@,.&' '\'FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG'rplc'_';9#' '
mil
3

Sebenarnya , 74 byte

"%s"9⌐α' j;"%s%20s"9α'
j(k'
j"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"#@%

Cobalah online!

Program ini bekerja dengan prinsip dasar yang sama dengan xnor's Python 2 answer .

Penjelasan (baris baru diganti dengan \nuntuk kejelasan):

"%s"9⌐α' j                                       ' '.join(["%s"]*11)
;                                                duplicate
"%s%20s"9α'\nj                                   '\n'.join(["%s%20s"]*9)
(                                                move bottom of stack to top
k'\nj                                            '\n'.join(stack)
"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"#@%                    %tuple(longstring)
Mego
sumber
3

C # 6, 192 190 Bytes

using System.Linq;
string f()=>string.Join("\n","FKCIIBAVWMG~N!P~T!N~C!C~S!P~P!S~V!C~S!P~E!L~S!B~JCVCORIBCMG".Replace("!","         ").Split('~').Select(s=>string.Join(" ",s.Select(c=>c))));

Tanpa ruang tambahan; tanpa membuntuti baris baru.

Solusi mudah. Mulai dengan string literal. Replace !dengan 9 spasi. Kemudian Splitmenjadi 11 string oleh ~, dan selanjutnya ke chars (batin Select). Tambahkan spasi untuk setiap karakter, lalu Joinkembali ke 11 string. Terakhir Joinoleh karakter baris baru.

Tautan Ng
sumber
3

Ruby, 92

Program penuh, mencetak ke stdout menggunakan $> <<

40.times{|i|$><<"FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG"[i]+(i%29>9?[$/,' '*19][i%2]:' ')}

Ada 40 total surat untuk plot. Surat 10 hingga 28 bergantian antara diikuti oleh baris baru atau ' '*19. Huruf-huruf awal dan kemudian dipisahkan oleh spasi tunggal.

Level River St
sumber
3

Perl, 115 112 byte

print FKCIIBAVWMG=~s/(.)/\1 /gr.NPTNCCSPPSVCSPELSB=~s/(.)(.)/"\n$1".$"x19 .$2/gre."\nJCVCORIBCMG"=~s/(.)/\1 /gr;

Menghasilkan output berikut:

F K C I I B A V W M G 
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G 

Baris pertama dan terakhir dari output memiliki spasi tambahan. Kode menggunakan penggantian regex dan fakta bahwa jika objek tidak didefinisikan, mereka ditafsirkan sebagai string (mis. FKCIIBAVWMG diperlakukan sebagai "FKCIIBAVWMG". Tidak dapat mengambil tanda kutip dari baris terakhir karena baris sebelumnya sebelumnya, yang Saya tidak bisa menipu di tempat lain.

Edit 1: Disimpan 3 byte dengan mengganti " "dengan $", menghapus tanda kurung luar dan memasukkan spasi setelah cetak, dan menghapus tanda kurung di sekitar $"x19dan menambahkan spasi setelah itu (sehingga .tidak akan ditafsirkan sebagai desimal)

Gabriel Benamy
sumber
Anda masih dapat menyimpan beberapa byte: s/(.)/\1 /dapat diganti dengan s/./$& /. Jatuhkan titik koma terakhir. Gunakan saysebagai gantinya print(untuk itu Anda harus menambah -M5.010atau menggunakan -Ealih-alih -e, tetapi keduanya gratis (lihat di sini )). Baris baru literal alih-alih \n.
Dada
2

Python 2, 116 Bytes

Cukup mudah, untuk alasan apa pun meskipun penggantian string sangat jelas, itu adalah hal terbaik yang bisa saya lakukan. Mungkin menggunakan remungkin lebih pendek.

print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace(' ! ','\n').replace('@',' '*17)
Kade
sumber
print'F K C I I B A V W M G\nN@P\nT@N\nC@C\nS@P\nP@S\nV@C\nS@P\nE@L\nS@B\nJ C V C O R I B C M G'.replace('@',' '*19)juga 116 byte tanpa menggunakan gabung jika Anda ingin lebih mudah. Bergantian, print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace('! ','\n').replace('@',' '*17)adalah 115 byte jika trailing spasi dibolehkan. (Argumen untuk mengganti adalah '!', Bukan '!'.)
MichaelS
2

Batch, 171 byte

@echo F K C I I B A V W M G
@set s=NPTNCCSPPSVCSPELSB
:l
@echo %s:~0,1%                   %s:~1,1%
@set s=%s:~2%
@if not "%s%"=="" goto l
@echo J C V C O R I B C M G
Neil
sumber
2

Bahasa GameMaker, 148 byte

Saya tahu ini sangat mendasar, tetapi saya tidak berpikir ini bisa mengalahkan dalam GML ...

a="                   "return"F K C I I B A V W M G #N"+a+"P#T"+a+"N#C"+a+"C#S"+a+"P#P"+a+"S#V"+a+"C#S"+a+"P#E"+a+"L#S"+a+"B#J C V C O R I B C M G "
Timtech
sumber
1
Terima kasih @NiCkNewman, tapi saya sudah benar-benar menggunakannya sebelumnya di situs ini beberapa kali - codegolf.stackexchange.com/search?q=GameMaker
Timtech
Begitu ya, saya berpikir untuk melakukan beberapa GDScript, bahasa dari Godotmesin game. Tapi, tidak yakin apakah itu akan baik-baik saja :)
NiCk Newman
Ah, andai saja papannya lebih besar; string_repeat(" ",19)panjangnya sama dengan " ".
u54112
1
@NiCkNewman Seharusnya tidak apa-apa, katakan padaku jika Anda menulis beberapa :)
Timtech
@ lastresort Saya tahu ... GML memungkinkan trik-trik untuk menghancurkan berbagai hal bersama-sama tetapi perintahnya sangat jelas ...
Timtech
2

Pip , 64 byte

63 byte kode, +1 untuk -Sbendera.

.*"NTCSPVSES".sX19.^"PNCPSCPLB"PE^"FKCIIBAVWMG"AE^"JCVCORIBCMG"

Cobalah online!

Penjelasan

Operator yang digunakan:

  • . (biner) menyatukan (mengoperasikan item-bijaksana pada daftar).
  • X(biner) string-mengalikan. ( sadalah variabel yang diinisialisasi ke" " .)
  • ^ (Tidak diperhatikan) membagi string menjadi daftar karakter.
  • .*adalah cara lain untuk membagi string menjadi karakter. Ini terdiri dari unary ., yang merupakan no-op pada string, dipasangkan dengan *operator-meta, yang memetakan operator unary untuk setiap item dalam operasinya (iterable). Menggunakan .*"..."memungkinkan kita menyimpan byte lebih (^"...")- tanda kurung akan diperlukan karena .lebih diutamakan daripada ^.
  • PEmenambahkan elemen ke daftar. AEmenambahkan elemen ke daftar.

Dengan latar belakang itu, inilah langkah demi langkah kode:

.*"NTCSPVSES"

['N 'T 'C 'S 'P 'V 'S 'E 'S]

.sX19

["N                   "
 "T                   "
 "C                   "
 "S                   "
 "P                   "
 "V                   "
 "S                   "
 "E                   "
 "S                   "]

.^"PNCPSCPLB"

["N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"]

PE^"FKCIIBAVWMG"

[['F 'K 'C 'I 'I 'B 'A 'V 'W 'M 'G]
 "N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"]

AE^"JCVCORIBCMG"

[['F 'K 'C 'I 'I 'B 'A 'V 'W 'M 'G]
 "N                   P"
 "T                   N"
 "C                   C"
 "S                   P"
 "P                   S"
 "V                   C"
 "S                   P"
 "E                   L"
 "S                   B"
 ['J 'C 'V 'C 'O 'R 'I 'B 'C 'M 'G]]

Ketika hasil ini dicetak secara otomatis, -Sbendera bergabung dengan sublists pada spasi dan daftar utama pada baris baru, memberikan hasil yang diinginkan.

DLosc
sumber
2

C, 171 156 Bytes

i,j;char*b="FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG ";f(){for(i=1;*b;j=i%21==0?putchar(*b++),puts(""),i++,*b++:i<21||i>210?i&1?*b++:32:32,putchar(j),i++);}

Menghasilkan karakter baris baru yang tertinggal juga ... Mungkin bisa diturunkan sedikit lagi.

Cleblanc
sumber
2

Perl 5, 92 86 byte

  • disimpan 6 byte berkat Dada

$a="%s "x11;printf"$a
"."%s%20s
"x9 .$a,FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG=~/./g

Penggunaan sprintf, bantalan dan operator pengulangan string x.

simbabque
sumber
Solusi bagus Anda dapat menyimpan beberapa byte: ganti \ndengan baris baru literal, Anda tidak perlu spasi antara xoperator dan nomor yang mengikuti, dan akhirnya diganti split//,xxxdengan xxx=~/./g.
Dada
1

Haskell, 128 125 114 byte

mapM(putStrLn.((:" ")=<<))$"FKCIIBAVWMG":zipWith(\a b->a:"         "++[b])"NTCSPVSES""PNCPSCPLB"++["JCVCORIBCMG"]

Coba di sini

  • ((:" ")=<<)is concatMap (\a -> [a,' '])- pad dengan menambahkan spasi di belakang setiap huruf dalam inputnya
Angs
sumber
1

Powershell, 95 byte

Terinspirasi oleh jawaban @ AdmBorkBork .

'FKCIIBAVWMG
N0P
T0N
C0C
S0P
P0S
V0C
S0P
E0L
S0B
JCVCORIBCMG'-replace0,(' '*9)-replace'.','$0 '

Penjelasan

Operator pengganti pertama membuat persegi panjang 11x11.

FKCIIBAVWMG
N         P
T         N
C         C
S         P
P         S
V         C
S         P
E         L
S         B
JCVCORIBCMG

Operator pengganti kedua memasukkan spasi setelah setiap karakter. Hasilnya memiliki spasi tambahan.

F K C I I B A V W M G
N                   P
T                   N
C                   C
S                   P
P                   S
V                   C
S                   P
E                   L
S                   B
J C V C O R I B C M G
mazzy
sumber