Mantan Menteri Pertahanan AS, Donald Rumsfeld, terkenal mempopulerkan ungkapan "yang dikenal." Di sini kita akan menyaring komentarnya menjadi bait empat baris.
Secara khusus, tampilkan teks ini:
known knowns
known unknowns
unknown knowns
unknown unknowns
Kapitalisasi tidak penting (misalnya, Known unKnowns
baik-baik saja), dan satu baris baru trailing dapat diterima, tetapi tidak ada perubahan pemformatan lainnya yang diizinkan. Itu berarti satu spasi di antara kata-kata, dan LF
(59 byte) atau CR/LF
(62 byte) antara baris.
Aturan
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
code-golf
string
kolmogorov-complexity
code-golf
sequence
binary
base-conversion
binary-matrix
code-golf
string
classification
code-golf
tips
python
code-golf
combinatorics
binary
subsequence
restricted-time
code-golf
number
number-theory
code-golf
math
number
complex-numbers
code-golf
string
code-golf
string
code-golf
string
random
game
king-of-the-hill
python
code-golf
number
sequence
code-golf
number
sequence
code-golf
code-golf
math
number
array-manipulation
code-golf
array-manipulation
decision-problem
code-golf
string
code-golf
sequence
integer
AdmBorkBork
sumber
sumber
Jawaban:
Python 2 ,
5452 byte-2 byte terima kasih kepada xnor
Cobalah online!
Hasil dari
/
dan%
akan menjadi[[2, 2], [2, 0], [0, 2], [0, 0]]
indeks awal, menghapusun
kapan2
, menjaga string tidak berubah saat0
sumber
k
menjadi'unknowns'
, Anda dapat memperbaiki dengank[i/3:7]
dan menyimpan dua byte.Vim
2825 byteIni jawaban Vim pertamaku, segala tip bermain golf dipersilakan.
Terima kasih Lynn karena telah menulis skrip python untuk membuat animasi yang fantastis.
Ini juga dapat dijalankan oleh V Coba Online!
Juga 25:
sumber
2iunknown ␛rsYPw2x2YP2xj.
atau sedikit variasi2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Ctrl-V).bash, 36 byte
solusi lain
36
37
38
41
45
jika baris baru dan ruang ekstra diterima 31 byte:
sumber
05AB1E ,
1312 byteDisimpan 1 byte berkat Erik the Outgolfer (hindari string penutup)
Cobalah online!
Penjelasan
sumber
“Š¢—‚“
->„Š¢—‚
CJam (
2625 byte)Demo online
Dengan produk Cartesian
["known" "unknown"]
sendiri, maka masing-masing elemen bergabung dengan ruang dan diakhiri dengans
dan sebuah baris baru.Terima kasih kepada Erik untuk penghematan satu byte.
sumber
R ,
525150 byteCobalah online!
Substitusi dan perintah cetak yang sangat singkat menjadikannya jawaban R yang sangat kompetitif dalam tantangan string !
Bahkan jika itu sangat membosankan.Agak lebih menarik sekarang, dan dengan satu byte tersimpan berkat Joe .Menyimpan byte lain berkat jawaban ini, juga oleh J.Doe!
sumber
Haskell ,
60585351 byteCobalah online!
Menghasilkan daftar garis seperti yang baru-baru ini diizinkan. Terima kasih kepada @firefrorefiddle karena telah menunjukkan.
-2 byte berkat cole .
Versi 58 byte:
Cobalah online! Menghasilkan satu string.
sumber
unlines
karena "Daftar empat string tidak apa-apa, karena itu masih mempertahankan ruang di antara kata-kata;" (Komentar untuk pertanyaan asli).C # (.NET Core) , 54 byte
Cobalah online!
sumber
Retina ,
3332 byteCobalah online! Sunting: Disimpan 1 byte berkat @ovs. Penjelasan: Ini hampir merupakan pendekatan sepele menggunakan placeholder untuk
known
, kecuali di sini saya cukup menyisipkannya sebelum setiap ruang ataus
, yang menghemat34 byte.sumber
|s
pendekatan lagi: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//…PHP,
55 5147 bytecoba online
sumber
<?=
adalah pilihan terpendek.Retina ,
3332 byteDisimpan 1 byte menggunakan pendekatan pencetakan perantara dari Leo.
Cobalah online!
Penjelasan
Mengubah input yang tidak ada (yaitu kosong) menjadi string pada baris kedua. Yang satu itu kelihatannya sangat aneh, tetapi karakter-karakter ini adalah kode untuk hal-hal yang terjadi di antara dua contoh
known[s]
pada dua baris pertama hasilnya. Ruang dan linefeed hanya diri mereka sendiri danu
iniun
.Sekarang kita menyisipkan
knowns
di setiap posisi (yaitu di awal, akhir, dan di antara setiap pasangan karakter).Kami memecahkan kode
u
.Kemudian kita singkirkan
s
di depan spasi, yaitu yang ada di paruh pertama setiap baris, dan cetak hasilnya.Dan akhirnya kami menambahkan
un
kedua baris dan mencetak hasilnya lagi.Ini mengalahkan pendekatan sepele dari hanya menggunakan placeholder
known
sebesar 4 byte, tetapi bukan implementasi Neil yang lebih efisien dari pendekatan itu.sumber
Bahasa Pemrograman Shakespeare ,
10211012993 byte-19 byte, terima kasih kepada Joe King!
Cobalah online!
sumber
the sum of
Perl 6 , 45 byte
Cobalah
Diperluas
Bagian
[X](…)
menghasilkanKemudian menggunakannya
X~
di dalamnya memaksa daftar dalam menjadi Str (karena&infix:«~»
operator), yang melakukan hal itu menambah ruang antara nilai.Kemudian masing-masing digabungkan dengan
s
sumber
Haskell,
5752 byteCobalah online!
sumber
APL (Dyalog) ,
644735 byteCobalah online!
Bagaimana?
k←'known'
-k
adalah"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- produk luar dengan sendirinya{⍺,' ',⍵,'s'}
- dengan fungsi yang memformat args sebagai{⍺} {⍵}s
,
- hancurkan tabel produk menjadi vektor⍪
- Pisahkan ke kolomsumber
Java 8,
5655 byte-1 byte terima kasih kepada @SuperChafouin .
Penjelasan:
Coba di sini.
sumber
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 byteTerima kasih kepada @Justin Mariner karena bermain golf satu byte!
Cobalah online!
sumber
%1$s
dan menyingkirkani
: Coba online!Sekam , 14 byte
Cobalah online!
Penjelasan
sumber
6502 kode mesin (C64), 48 byte
Demo online
Pemakaian:
sys49152
Bagaimana itu bekerja
Kuncinya di sini adalah dengan menggunakan "loop counter" untuk 8 iterasi di mana bit 7 sampai 1 dari nilai awal adalah
1
untukunknown(s)
dan0
untukknown(s)
dalam satu iterasi. Penghitung ini digeser ke kiri setelah setiap iterasi (menggeser bit paling kiri ke bendera carry) dan bit0
awalnya1
jadi kita tahu kita selesai begitu bit terakhir digeser keluar. Pada iterasi pertama,known
dicetak karena saat memanggil program, flag carry jelas.Di setiap iterasi, ujung string beralih antara
<space>
dans<newline>
.Berikut daftar pembongkaran yang dikomentari:
sumber
Perl 5 , 33 byte
Disclaimer : Saya tidak menyadari bahwa ekspansi penjepit mungkin dalam
<...>
operator (belajar berkat @ Kotor 's jawaban !) Dan menggunakan trik ekspansi pandai dari @ NahuelFouilleul ' s menakjubkan jawaban pesta , saya bisa membangun solusi ini. Saya dengan senang hati akan menghapus ini atas permintaan mereka.Cobalah online!
Perl 5 , 42 byte
41 byte kode +1 untuk
-p
.Cobalah online!
Perl 5 , 45 byte
Mencoba mencari alternatif, tapi tidak bisa membuatnya lebih pendek ... Kupikir itu cukup berbeda untuk menjamin penambahan.
Cobalah online!
sumber
Haskell,
71665654 byteTerima kasih kepada @ Leo untuk -3 byte!
Catatan: Dalam komentar pertanyaan, op mengatakan bahwa mengembalikan daftar string tidak masalah
Coba di sini.
sumber
fmap
dan seterusnya dapat disingkat menjadimap(' ':)
:)f=
.Jelly , 15 byte
Cobalah online!
sumber
Ruby,
5350 bytesumber
\n
dengan baris baru literal.Batch, 66 byte
Jawaban alternatif, juga 66 byte:
sumber
Haxe, 71 byte
Cobalah online!
sumber
C (gcc) ,
7066 byteBerkat @ l4m2 untuk -4 byte!
Cobalah online!
sumber
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
alih-alihi%2?" ":"s\n"
PowerShell ,
4644 byteCobalah online!
(Hampir) penggantian string sederhana. Menggunakan pendekatan Neil untuk memangkas dua byte. Terima kasih kepada Martin karena menunjukkan hal itu.
Sayangnya, ini lebih pendek daripada metode lintas-produk yang lebih menarik dengan
tigalimatiga byte:PowerShell ,
4947 byteCobalah online!
sumber
T-SQL,
5654 byteSQL mendukung jeda baris di dalam string literal, sangat mirip dengan beberapa bahasa lain yang sudah diposting.
EDIT : Sedikit lagi ( 82 bytes ), tapi sedikit lebih pintar:
EDIT 2 : Favorit saya sejauh ini, menggunakan cross-self-join dari tabel turunan ( 79 byte ):
EDIT 3 : Mengubah karakter pengganti dari
'x'
menjadi1
, yang memungkinkan saya menghapus tanda kutip di sekitarnya dan menghemat 2 byte, karenaREPLACE
melakukan konversi implisit ke string.sumber
ReRegex , 38 byte
Cobalah online!
sumber
a/known / z/s\n/aazaunazunaazunaunaz
tampaknya berfungsi selama 36 byte.Javascript
66 54 5350 byteSejarah
sumber
replace
menghemat satu byte.0
s dan menggunakan.replace(/ |s/g,'known$&')
(yang sekarang hanya menyimpan 3 byte).