Menurut hemat saya, teks standar itu membosankan. Karena itu saya mengusulkan standar penulisan baru, kata-kata berjalan!
Kata-kata berjalan
Walking words adalah kata-kata yang akan merespon karakter tertentu. Untuk tujuan tantangan ini, karakter pemicu [u, d, r, l]
berasal up down right left
.
Setiap kali Anda menemukan karakter seperti itu saat mencetak teks, Anda akan memindahkan arah teks.
Misalnya, teks abcdef
akan menghasilkan:
abcd
e
f
Aturan
- Baik huruf besar
UDRL
dan keciludrl
harus mengubah arah, tetapi case harus dipertahankan dalam output - Input hanya akan berisi karakter yang dapat dicetak
(0-9, A-Z, a-z, !@#%^&*() etc...)
, tidak ada baris baru! - Setiap kali teks akan bertabrakan, itu akan menimpa karakter lama di posisi itu
- Keluaran harus disajikan kepada pengguna dalam hal apa pun yang modis, tetapi harus berupa keluaran tunggal (tanpa deretan garis)
- Trailing dan baris baru diizinkan
- Ruang tambahan diizinkan
- Celah standar berlaku
Uji kasus
empty input => empty output or a newline
u =>
u
abc =>
abc
abcd =>
abcd
abcde =>
abcd
e
abcdde =>
abcd
d
e
codegolf and programming puzzles =>
cod
e
g
o
dna fl sel
z
p z
rogramming pu
ABCDELFUGHI =>
I
AHCD
G E
UFL
It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words! =>
dnats taht noinipo el
a b
rd m
It is in my hu
t
e
x
t
i
s
b
o
ring. Therefore I propose a new writing stand
a
rd
,
w
a
rdw gnikl
s
!
Ini adalah kode-golf , kode terpendek dalam byte yang menang!
code-golf
grid
printable-ascii
Bassdrop Cumberwubwubwub
sumber
sumber
golf
terlihat dengan sendirinya?gfl
Jawaban:
Arang ,
29272019 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ulangi karakter input.
Jika huruf saat ini adalah arah ...
kemudian perbarui arah berjalan saat ini.
Cetak karakter dalam arah berjalan saat ini, default ke kanan jika belum ada arah yang ditetapkan.
sumber
⌕
Seharusnya a№
. Maaf soal itu.Dyalog APL , 63 byte
s@(n+11 9∘○¨+\0j1*⊃¨,⍨\(8∘≠⍴¨⊢)0,'rdluRDLU'⍳¯1↓s)⍴∘'',⍨2×n←≢s←⍞
menggunakan
⎕IO←0
dan fitur dari v16 (@
)n←≢s←⍞
input mentahs
dan panjangnyan
⍴∘'',⍨2×n
buat 2n demi 2n matriks ruangs@(...)
mengubah matriks dengan karakters
pada indeks (pasangan) yang ditentukanbagaimana indeks dihitung:
¯1↓s
jatuhkan char terakhirs
'rdluRDLU'⍳'
disandikan'r'
sebagai 0,'d'
sebagai 1, dll; karakter lain seperti 80,
tambahkan sebuah 0(8∘≠⍴¨⊢)
mengubah setiap 8 menjadi daftar kosong, semua yang lain menjadi daftar 1-elemen,⍨\
konkatasi bertukar kumulatif (abcd
->a ba cba dcba
)⊃¨
pertama dari masing-masing0j1*
konstanta imajiner i dengan kekuatan+\
jumlah kumulatif11 9∘○¨
bagian nyata dan imajiner dari masing-masing; dapatkan koordinasi di kisaran-n
...n
n+
pusatkan mereka pada matriks besarsumber
Pyth,
6865 byteSuite uji
Ini menggunakan kamus, diindeks oleh sepasang koordinat, yang diperbarui sebagai input dibaca, kemudian dicetak di akhir. Ini juga menggunakan satu ton trik golf yang cerdas.
Inilah cara saya menulisnya, menggunakan
-m
bendera juru bahasa untuk menghapus spasi dan komentar sebelum menjalankan:sumber
C #,
525474 BytesSunting: Disimpan 51 Bytes berkat @steenbergh
Itu tidak cantik, tapi itu berhasil ...
Golf:
Tidak Disatukan:
Penjelasan:
Menggunakan array dua dimensi dan
d
nilai untuk meningkatkan posisi array dalam arah koreksi, di mana nilai d adalah:Uji:
sumber
d=0;
, ganti pernyataan ini dengan pernyataan di pernyataan beralih keduacase 0:
dan lakukan mirip dengan kasus lain dan Anda mungkin tidak perlu beralih kedua. Dan terakhir hapus pernyataan inia[y,x]=s[i]
dan tulis di atas dari saklar pertama.a[y,x]=s[i]
sebelum beralih dulu?switch(s[i].toLowerCase())
(atau apa yang setara dengan c # ...) lalu menghapus semua huruf besar. Harus menyimpan beberapa byte.ToUpper()
karena ituchar
bukanstring
. Pilihannya adalahs[i].ToString().ToUpper()
atauchar.ToUpper(s[i])
- Saya pikir yangchar
sedikit lebih pendek. Cheers :)JavaScript (ES6), 218
220 232Sunting Saya menggunakan
u
dant
untuk melacak posisi teratas dan paling kiri, tetapi saya menyadari bahwat
itu tidak diperlukan sama sekaliKurang golf
Uji
sumber
05AB1E ,
27 26 25 2322 byteDisimpan 3 byte berkat Grimy
Cobalah online!
Penjelasan
sumber
Javascript, 4̶6̶6̶,
455, 433 BytesSuntingan: 11 Bytes disimpan, terima kasih kepada pengguna 1000000000 10 atau lebih disimpan, berkat pengguna2428118 Juga menghapus beberapa titik koma yang tidak perlu.
Saya cukup yakin ini bisa golf lebih lanjut, tetapi saya tidak bisa mengelolanya. Saya masih baru, jadi semua saran sangat dihargai :)
Tidak Disatukan:
}
Saya kurang lebih mengambil pendekatan:
sumber
['r','u','l','d']
dengan"ruld"
z=
di awal program Andaa.split``
.Python 3,
314309290268 BytesSaya mencoba menjalankan program saya sebagai input ke program saya dengan beberapa hasil menarik. Hah, coba tafsirkan itu, Python!
Dicukur 5 byte - pujian untuk Jack Bates.
23 byte dibawa pergi oleh kundor
Catatan: Saya pikir ada beberapa kesalahan pengukuran dengan byte saya karena menggunakan editor yang berbeda. Namun, saya cukup yakin yang terbaru benar.
sumber
'r':(1,0)
dengan'r':d
dan dengan menghapus spasi padaw[a] for
. Juga ini gila !!! Berapa lama waktu yang Anda ambil?X,Y=map(...)
baris denganX,Y=zip(*m)
. Bekerja disini. (*m
membongkar kunci itu ke daftar kuncinya, dan mengelompokkannya menjadi dua tupel.)PHP,
238 223 205204 byte12 byte disimpan oleh Jörg (
stripos
bukanpreg_match
), 1 byte + kawat gigi dengan memimpin bukannya trailing baris baru, 16 + kawat gigi golf dari perubahan arah, 1 lebih dengan ternary bukanif
.Jalankan sebagai pipa dengan
php -nR '<code>'
atau coba online .kerusakan
sumber
strspn($r[$y+=$e][$x+=$d]=$c,udlruDLR)
harus menyimpan beberapa byte daripada menggunakan regex, ´stripos (_ulrd, $ r [$ y + = $ e] [$ x + = $ d] = $ c) `harus lebih baik seperti strspn$argn
save 3 BytesJava 10,
288286280263 byte-17 byte terima kasih kepada @Grimy .
Penjelasan:
Coba di sini. (CATATAN: Saya menghapus semua spasi tambahan / baris baru untuk membuat output sedikit lebih kompak. Jangan lepaskan
.replaceAll("(m?)\\s+$","")
ditest
-metode untuk melihat hasil yang sebenarnya.)sumber
d<69?1:d>84?-1:0
bisa5-d/14
d==82?1:d==76?-1:0
bisa3-(d^16)/23
Perl, 204 + 3 = 207 byte
+3 untuk
-F
Spasi bukan bagian dari kode dan disediakan untuk keterbacaan.
Mirip dengan solusi saya untuk tantangan Fizz Buzz, saya membuat hash dengan koordinat x, y untuk setiap langkah di sepanjang jalan, menjaga maksimum dan minimum koordinat x dan y yang disimpan, kemudian loop through dan cetak semuanya.
Jika saya putus asa saya mungkin bisa mengubah tiga baris terakhir dari
for
loop pertama menjadi pernyataan menjijikkan tunggal yang dapat menghemat satu atau dua byte, tapi saya tidak menantikan hasil yang benar-benar tidak dapat dibaca.sumber
Excel VBA, 205 byte
Saya agak terkejut dengan kemampuan Excel untuk bersaing dengan jawaban yang ada. Ini bekerja karena
w
danz
melacak arah.sumber
SmileBASIC,
148146 bytePanggil fungsi dengan
W "text",vx,vy
, di mana vx dan vy adalah arah di awal (default adalah 1,0)sumber
Swift 3, 283 byte
Tidak disatukan
Peringatan
Input yang lebih panjang akan membutuhkan layar yang lebih besar. Output tidak memiliki perawatan untuk baris / kolom "kosong" seperti yang saya pahami yang dapat diterima oleh aturan tantangan.
Kata-kata kasar
print
suxsumber