Apakah Anda mengenali logo PPCG? sepertinya ini, ketika Anda melakukan seni ascii itu.
+---+
|PCG|
+---+
v
Sekarang, Di Golf Kode ini, Anda akan membuat kode, yang membuat logo untuk situs lain, mirip dengan logo PPCG.
Apa yang harus Anda lakukan
String "Dipendekkan" akan menjadi string, dengan semua huruf besar dan angka dalam string input. (Yang akan terjadi PPCG
ketika string input Programming Puzzles & Code Golf
)
Kotak" (
+---+
| |
+---+
v
) harus sesuai dengan string yang Dipendek dengan sempurna. (Tidak lebih besar atau lebih kecil)
Juga v
bagian harus tepat 1 ke bawah dan 1 ke kiri ke kanan bawah +
.
Kemudian output kotak yang memiliki string pendek di dalamnya.
Contoh
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
Aturan
Anda dapat mengasumsikan bahwa input berisi setidaknya satu digit atau huruf besar.
Aturan standar kode-golf berlaku.
^
tidak menambah banyak dibandingkan dengan tantangan kedua yang saya tautkan, tapi saya tidak akan melemparkan palu dupe pada itu tetapi membiarkan komunitz memutuskan apakah mereka menganggap itu bohong atau tidak.99 Bottles Of Beer
, itu akan terjadi99BOB
.Jawaban:
Vim, 42 pukulan
Ganti
<DOWN>
dengan ↓,<LEFT>
dengan ←,<ESC>
dengan escdan<C-V>
dengan CTRL+ V.Berikut ini adalah animasi dari skrip ini berjalan (versi lama yang menggunakan
V
bukan av
):Penjelasan naskah:
sumber
i+↓←|␛␖ky$p
denganA+↓|␛␖ky0P
untuk menyimpan byte.I|<END>|␛
V 34 byte
Perhatikan bahwa ini berfungsi di versi yang lebih lama, tetapi tidak berfungsi di versi saat ini saat mencobanya secara online. Saya berubah
Ä
menjadiYP
yang fungsional setara.Cobalah online!
Penjelasan:
Hapus semuanya kecuali untuk digit dan huruf besar.
Sekarang, buffer terlihat seperti ini:
Dan kursor kami ada di kolom pertama dari baris terakhir.
Versi yang tidak bersaing: (31 byte)
sumber
Programming Puzzles & Code Golf
menghasilkan string yang salahPP&CG
dalam output. Itu&
harus dihapusKode mesin x86 16-bit, 72 byte
Dalam hex:
Parameter:
SI
= string input,DI
- buffer output.Menghasilkan string yang diakhiri NULL dengan garis yang dibatasi oleh baris baru. Menggunakan string input sebagai buffer sementara.
sumber
3c 41 cmp al,a'
bukankah seharusnya begitu3c 41 cmp al,'a'
?Retina , 43 byte
Cobalah online!
Ini adalah tantangan sempurna untuk mendemonstrasikan Retina, bahasa golf Martin Ender.
Solusi ini dibagi menjadi dua langkah (apa yang kita sebut tahap), kedua tahap menjadi tahap penggantian.
Tahap pertama:
Ini cocok dengan substring yang cocok
[^A-Z\d]
, yang merupakan karakter yang bukan huruf besar dan bukan digit, dan kemudian gantikan dengan apa-apa, artinya menghapusnya.Tahap kedua:
Itu
.+
cocok seluruh hasil, dan kemudian mengganti dengan baris kedua.Di baris kedua:
$&
mengacu pada seluruh pertandingan$.&
mengacu pada panjang seluruh pertandingan$*
artinya ambil bilangan bulat sebelumnya, ulangi karakter berikutnya yang berkali-kali. Di sini$.&$*-
berarti mengulangi-
seberapa lama pertandingan itu.¶
merujuk ke baris baru.sumber
T`dLp`dL_
Sayangnya, alternatif untuk tahap pertama adalah panjang yang sama.C #,
183 177165 bytemengalikan karakter sangat buruk di C #. saran dihargai
terima kasih banyak untuk aloisdg untuk -18 byte
sumber
| |
dengan|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
denganstring.Concat(
return
Excel VBA,
375359358 byte:Berhasil, saya menyerah untuk mencoba membuatnya lebih pendek ...
Sunting: Beralih ke pernyataan kasus dari pernyataan if, -16 bytes
Sunting2: Singkirkan u dan diganti dengan Len (b), -1 byte
sumber
Lua,
14599 BytesTidak banyak bicara, memanipulasi string selalu bertele-tele di lua :). Mengambil argumen baris perintah dan output melalui STDOUT
Terima kasih kepada @LeakyNun karena telah menyelamatkan saya 45 Bytes!
100 Bytes yang diusulkan oleh @LeakyNun
TUA 145 Bytes
Tidak disatukan
sumber
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
is 100 bytes%u
kita mendapatkan beberapa byte lagi. Bagaimanapun, terima kasih :) (akan memperbarui ungolfed nanti)2sable ,
3634333231 byteMenghadirkan 2sable :). Meskipun memiliki banyak kesamaan dengan 05AB1E, yang satu ini sebenarnya otomatis bergabung dengan stack daripada mengeluarkan bagian atas stack. Kode:
Menggunakan pengkodean CP-1252 .
sumber
JavaScript (ES6), 99 byte
sumber
Haskell, 107 Bytes
Jawaban ini sangat didasarkan pada jawaban oleh Zylviij dan komentar oleh nimi . Saya akan menambahkan lebih banyak komentar untuk jawaban itu, tetapi sayangnya, saya tidak memiliki cukup perwakilan.
Trik tambahan yang digunakan:
intersect
oleh implementasinya sehingga impor bisa dibatalkan. (Catatan: implementasinya hampir sama dengan perpustakaan, saya tidak dapat menemukan versi yang lebih pendek.)where
klausa sehingga fungsi dapat menggunakann
parameter secara internal.(#)
cukup pendek untuk diuraikan.sumber
Python 3.5,
11493112 byte:Program lengkap. Pada dasarnya menggunakan ekspresi reguler untuk mencocokkan semua kemunculan huruf besar dan angka, kemudian membuat kotak dengan ukuran yang tepat berdasarkan panjang daftar kecocokan, dan akhirnya menempatkan daftar kecocokan yang tergabung "di dalamnya".
Cobalah secara Online! (Ideone)
sumber
Python 3,
121124 byteMemperbaiki kesalahan bodoh
tidak mengimpor perpustakaan seperti jawaban python lainnya.
sumber
Java 8, 149 byte
Cobalah online.
Penjelasan:
sumber
Pyke, 39 byte
Coba di sini!
12 byte penciptaan mini-string, 20 byte format. Kegembiraan!
sumber
Pyth,
3837 byteCobalah online.
Perhatikan baris baru di awal.
sumber
Python 2, 113 byte
sumber
47<x<58|64<x<91
:)char
tipe integral - semua karakter dalam string Python adalah string itu sendiri, dan tidak dapat secara langsung dibandingkan dengan integer. Itu perlu47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
lebih pendek satu byte darifilter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Jolf, 35 byte
Saya perlu cara yang lebih singkat untuk menghapus semua kecuali huruf & angka ...
sumber
C,
171163Function
f()
memodifikasi inputnya dan mencetak hasilnya.Program Tes
Membutuhkan satu parameter, string untuk digunakan dalam favicon:
sumber
Haskell, 161
Pemakaian
sumber
replicate
,length
danf
secara eksklusif dalam kombinasi ini, sehingga Anda dapat menggabungkannya menjadi satu fungsi:r=replicate.length.f
dan menyebutnya sepertir n '-'
. Anda dapat menyimpan lebih banyak byte dengan menggunakan operator infiks:(#)=replicate.length.f
dann#'-'
/n#' '
. Selainreplicate.length
itu>>
(dengan string tunggal bukan char), jadi:(#)=(>>).f
dann#"-"
/n#" "
, keduanya tanpa( )
di sekitarnya.( )
sekitart n
danf n
."|"++
adalah'|':
. Semua dalam semua:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Bash,
9974 bytePenggunaan: Jalankan perintah di atas, ketikkan nama situs, tekan enter dan kemudian Ctrl+ D(kirim 'akhir file').
sumber
CJam, 41
Cobalah online
sumber
R, 108 byte
Penjelasan
Pergi dari dalam ke luar (karena siapa yang tidak suka menugaskan variabel global dari dalam sebuah regex), dengan asumsi
s
adalah string input kami:y<-gsub("[^A-Z0-9]","",s)
menyimpan kapital dan angka, memberikan nilai yang dihasilkan ke y.gsub(".","-",y<-...)
mengganti semua karakter dengan tanda hubung di atas.x<-gsub("(.*)","+\\1+\n",gsub(...))
chuck a+
di kedua ujung baris tanda hubung, dan baris baru, dan kami menyimpannya sebagai x.Sisanya cukup mudah, menghasilkan dalam urutan yang sesuai, dan menggunakan fakta bahwa jumlah spasi sebelum
v
akan sama dengan panjang y.sumber
Brachylog , 61 byte
Ditautkan ke repositori pada 7 Juli untuk memastikan kompatibilitas.
Non-bersaing, 53 byte
Cobalah online!
sumber
APL,
5249 byte(turun ke 49 berkat komentar).
sumber
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(Anda tidak pernah mengurung salah satu argumen dalam fungsi argumen terbalik ketika bermain golf. Selalu bisa dalam urutan normal untuk menyimpan byte.)Perl, 57 byte
56 byte kode +1 untuk
-p
.Saya awalnya mencoba membuat ini hanya menggunakan regex, tapi itu jauh lebih besar dari yang saya harapkan, jadi saya telah menggunakan beberapa pengulangan string.
Cobalah online!
sumber
MATL , 34 byte
Cobalah online!
sumber
JavaScript (ES6), 119 bytes
sumber
J, 52 bytes
Try it online!
sumber
Ruby, 81 bytes (78 +
-p
flag)sumber
Common Lisp (Lispworks), 159 bytes bytes
ungolfed:
Usage:
sumber