Alfabet Hujan
Tugas:
Premis dasarnya adalah untuk mencetak string input dan kemudian mengulangi setiap karakter secara vertikal, berdasarkan posisi (0-diindeks) itu dalam alfabet (case-insensitive) A-Z
. A
berada di lokasi 0 jadi tidak diulang, e
berada di posisi 4 jadi diulang 4 kali, P
di posisi 15 jadi diulang 15 kali, !
tidak di A-Z
begitu diulang 0 kali, dll.
Untuk kejelasan, apa pun yang berada di luar rentang B-Zb-z
, misalnya digit atau karakter khusus, tidak akan diulang, dan dengan demikian hanya akan muncul di baris pertama.
Ini adalah kode-golf , jadi solusi terpendek dalam setiap bahasa adalah pemenangnya.
Memasukkan:
- Input akan berada dalam set karakter ASCII yang dapat dicetak standar, dari 32
~
. - String input akan menjadi 1 karakter atau lebih panjang.
- Tidak akan ada spasi putih depan atau belakang.
- Anda dapat mengambil input sebagai string (
"hello"
) atau daftar karakter (["h", "e", "l", "l", "o"]
)
Contoh:
Masukan dari aaaa
memberi:
aaaa
Masukan dari abcda
memberi:
abcda
bcd
cd
d
Input dari Programming Puzzles & Code Golf!
, memberikan:
Programming Puzzles & Code Golf!
Progr mming Puzzles Code Golf
Progr mming Puzzles Code Golf
Progr mming Puzzles ode Golf
Progr mming Puzzles o e Golf
Progr mming Puzzl s o Golf
Progr mming Puzzl s o Gol
Pro r mmin Puzzl s o ol
Pro r mmin Puzzl s o ol
Pro r mm n Puzzl s o ol
Pro r mm n Puzzl s o ol
Pro r mm n Puzzl s o ol
Pro r mm n Puzz s o o
Pro r n Puzz s o o
Pro r Puzz s o o
Pr r Puzz s
r r uzz s
r r uzz s
uzz s
uzz
uzz
zz
zz
zz
zz
zz
Input dari ~|[abc<0>cba]|~
, memberikan:
~|[abc<0>cba]|~
bc cb
c c
Catatan:
- celah standar berlaku
- output bisa berupa daftar string, tetapi:
- newline trailing asing tidak diperbolehkan (tunggal
\n
pada baris terakhir dapat diterima) - output bisa berupa daftar karakter, asalkan terlihat hujan
- tidak ada baris baru terkemuka
- untuk pengguna Nordic kami yang memiliki beberapa huruf tambahan dalam alfabet "AZ" mereka, jangan ragu untuk mendukung mereka, tetapi itu bukan bagian dari tantangan
\n
dapat diterima?Jawaban:
6502 kode mesin (C64), 113 byte
Demo online
Penggunaan:,
sys49152,"[string]"
missys49152,"Programming Puzzles & Code Golf!"
.Penting: Jika program dimuat dari disk (seperti dalam demo online), keluarkan
new
perintah terlebih dahulu! Ini diperlukan karena memuat program mesin menghancurkan beberapa pointer BASIC C64.Catatan: C64 secara default dalam mode tanpa huruf kecil - untuk dapat memasukkan string case campuran, beralih ke mode huruf kecil terlebih dahulu dengan menekan
SHIFT
+CBM
.Penjelasan
Berikut daftar pembongkaran yang dikomentari:
sumber
05AB1E ,
1312 byteCobalah online!
Penjelasan
sumber
Ask
untuk ituPyth,
12109 byteSuite uji.
Penjelasan:
12 byte:
(dengan mengikuti baris baru)
Suite uji.
Penjelasan:
sumber
j
Python 3 , 83 byte
Cobalah online! Mengambil daftar karakter. Mengembalikan daftar daftar karakter.
Python 2 , 90 byte
Cobalah online! Mengambil string. Mengembalikan string.
sumber
Mathematica,
11589 byteDibutuhkan sebagai
input
sebuah daftar karakter[{"a", "b", "c", "d", "a"}]
dan output daftar daftar karakterCobalah online!
-26 byte dari Misha Lavrov
-5 byte dari user202729
tetapi jika Anda ingin melihat output seperti pada test case, coba kode (128 byte) ini.
Coba online!
sumber
∞
(3 byte) ->\[Infinity]
(11 byte)).\[Infinity]
(11 byte) dapat diganti denganInfinity
(8 byte) atau\:221e
(6 byte). Yang terakhir adalah representasi default karakter khusus tanpa nama. (meskipun itu bukan bagian utama)Infinity
sepenuhnya menghindari . Bagian yang bermasalah adalahIf[(d=Min@Position[Alphabet[],If[UpperCaseQ@#,ToLowerCase@#,#]])==∞,1,d]
dan kita bisa mengubahnya keMax@Position[Alphabet[]/."a"->#,#|ToLowerCase@#]
. (Menelusuri dalam daftar{#,b,c,d,...,y,z}
, kami dijamin akan menemukan#
setidaknya satu kali.)Dyalog APL ,
2722 byte5 byte disimpan berkat @ Adám
Cobalah online!
Bagaimana?
⍴¨⍨
- bentuk masing-masing char dengan panjang1⌈
- setidaknya satu atau⎕A⍳819⌶⍨∘1
- Indeks char yang ditulis dalam alfabet27|
- modulo 27↑
- Ratakan ke matriks⍉
- dan transpossumber
⍉∘↑⊢⍴¨⍨1⌈27|⎕A⍳819⌶⍨∘1
Arang , 12 byte
Cobalah online!
-3 Terima kasih kepada Neil .
sumber
Python,
105103 byte2 byte disimpan berkat @TFeld
Cobalah online!
sumber
Python 2 ,
1111069998978793 byteCobalah online!
sumber
while
dapat diganti denganexec
untuk menghemat beberapa byte,i
dapat mulai dengan 65 untuk menyimpan lebih banyak hingga mencapai 87 bytez
atauZ
.exec
perubahan ...C # (.NET Core) , 162 byte
Cobalah online!
sumber
using System.Linq;
sayangnya wajib untuk menambah byte-count (atau Anda harus mengubahMax
keSystem.Linq.Max
danSelect
keSystem.Linq.Max
, yang akan lebih tinggi dari hanyausing System.Linq;
sekali.) Sekali lagi selamat datang, dan nikmati masa tinggal Anda. Oh, dan saya melihat @IanH. sudah disebutkan Tips untuk Golf di C #. Kiat bermain golf di <semua bahasa> mungkin juga menarik untuk dibaca.Bash,
78,7671 byteTergantung pada pemeriksaan (LC_ALL default) dapat menyimpan lebih banyak byte
Cobalah secara Online
sumber
Perl 5 , 43 byte
Kode 41 byte + 2 untuk
-nl
.Cobalah online!
sumber
s/["-$c]/ /gi
dan-l
tidak diperlukanJavaScript (ES6),
877876 byte-9 byte berkat @RickHitchcock .
-2 byte terima kasih kepada @Neil .
Mengambil input sebagai string dan kembali dengan satu baris tambahan.
Uji Kasus
Tampilkan cuplikan kode
sumber
f=(s,i=10)=>s.trim()&&s+'newline'+f(s.replace(/./g,c=>parseInt(c,36)-i?c:" "),i+1)
s
sangat bagus.parseInt(c,36)-i>0
parseInt(c,36)>i
sebagai gantinya untuk menyimpan 2 byte?R,
118114 byteTerima kasih kepada @Giuseppe untuk off 4 byte tersebut
Cobalah online!
Penjelasan singkat:
sumber
a
semua ruang, ini tidak akan mencetak apa pun ... tetapi Anda dapat mengubahwhile
kondisigrepl()|!F
yang masih byte lebih pendek dari jawaban asli Anda.R ,
125123 byteDikalahkan oleh plannapus
Cobalah online!
Mencetak ke stdout dengan satu baris baru dan membaca dari
stdin()
.Mari kita jabarkan:
Jawaban alternatif, 106 byte
Cobalah online!
Fungsi; mencetak ke stdout tetapi pada dasarnya respons saya di atas porting untuk menerima daftar karakter daripada membelah string, jadi saya merasa seperti "curang." Plus, pendekatan plannapus dengan regex cukup rapi!
sumber
Oktaf / MATLAB,
7466 byteCobalah online!
sumber
Japt ,
15141110 byteKesempatan pertama untuk bermain dengan metode padding string baru dari Japt sehingga mungkin masih ada ruang untuk perbaikan.
Cobalah
Penjelasan
Input string yang tersirat
U
.Lewati setiap kolom
U
melalui fungsi, di manaZ
elemen saat ini (atau huruf, dalam hal ini).Konversikan
Z
ke huruf besar (u
), dapatkan kode kodenya (c
) dan kurangi (u
) 64 (I
).Pad mulai
Z
dengan dirinya sendiri hingga mencapai panjang itu.Alternatif
Cobalah
sumber
ùZ
untukp
menyelamatkan ... tidak apa-apa, itu benar-benar pintar ...p
( mungkin ada 1 di edit history) tetapiù
menang pada akhirnya.Haskell ,
137136127119 byteCobalah online!
Cukup lama tapi saya tidak bisa memikirkan cara untuk mempersingkat lebih lanjut.
Saya merasa harus ada beberapa cara yang lebih pendek dari sintaks if-then tapi saya tidak melihatnya.EDIT: Terima kasih @streetster untuk membantu saya mengurangi satu byte! Saya tidak menggunakan
toUpper
pada awalnya karena biaya imporData.Char
tetapi saya lupa bahwa itu juga menyediakanord
yang jauh lebih pendek daripadafromEnum
EDIT 2: Terima kasih kepada @Laikoni karena telah menghilangkan 6 byte lagi dan mengidentifikasi bug yang sekarang telah saya perbaiki. Saya menggunakan 26 bukannya 25 karena saya lupa bahwa array Haskell inklusif. Kemudian saya perhatikan bahwa saya bisa menggunakan
last
daripadahead
yang akan memungkinkan saya untuk menggunakannya0:
daripada++[0]
.EDIT 3: Terima kasih lagi Laikoni untuk 8 byte itu. Saya benar-benar lupa tentang ruang itu. Untuk beberapa alasan Sublime Text membalik tanpa itu dan saya lupa menghapusnya. Saya tidak tahu bahwa daftar garis diizinkan, saya harus membaca peraturan dengan lebih hati-hati.
sumber
if i>p c then ' ' else c
bisa disingkat menjadilast$c:[' '|i>p c]
.[k |
dan mengembalikan daftar garis diperbolehkan, jadi Anda tidak memerlukannyaunlines
. Akhirnya, Anda mungkin tertarik dengan ruang obrolan Haskell kami .Excel VBA, 110 Bytes
Anonymous VBE Immediate Window Fungsi yang mengambil input seperti tipe yang diharapkan
Variant\String
dari rentang[A1]
dan menggunakannya untuk menghujani alfabet di jendela langsung VBE.Contoh I / O
sumber
?A1:...
[]
menunjukkan bahwa string yang terkandung harus dievaluasi ke objek di / di / sebagai buku kerja,[A1]
panggilan mungkin tidak berkurang menjadiA1
- karena ini tidak akan mengambil dan mencetak input awal dari rentang[A1]
; melainkan ini hanya akan meninggalkan baris kosong dan semua baris berikutnya akan dicetakPHP,
69 78 7785 + 1 bytemembutuhkan PHP <7. Jalankan sebagai pipa dengan
-nR
atau coba online .sumber
$c=A;!$c[1];$c++
. Yang bagus! Sedihnyaextraneous trailing newlines are not allowed (single \n on final line is acceptable)
. Jadi gagal untuk semua string yang tidak mengandungz
.Bash + sed, 37
Cobalah online .
sumber
C (gcc) , 189 byte
Cobalah online!
sumber
puts("");
alih-alihputchar(10)
Ruby,
706774 byteTerima kasih kepada @TuukkaX karena menunjukkan beberapa parens dapat dihapus (-3 byte)
Sayangnya saya kemudian harus menambahkan 7 byte karena versi asli gagal menangani "z".
Menyebutnya:
sumber
Oracle SQL, 186 Bytes
Asumsikan string akan berada dalam tabel
t
di kolomv
:SQL Fiddle
Pengaturan Skema Oracle 11g R2 :
Pertanyaan 1 :
Hasil :
sumber
Jelly , 15 byte
Cobalah online!
sumber
Haskell , 98 byte
Cobalah online!
Contoh penggunaan:
f "[Abc]"
menghasilkan daftar baris:["[Abc]"," bc "," c "]
. GunakanputStr.unlines.f $ "[Abc]"
untuk hasil cetak yang cantik:Sebagian terinspirasi olehNow langsung berdasarkan jawaban Haskell user1472751 .Pendekatan sebelumnya (
10099 bytes)Cobalah online!
sumber
PowerShell ,
122127 byteCobalah online!
Singkat terima kasih kepada bagaimana PowerShell dapat secara dinamis berpindah di antara
[char]
dan[int]
, tetapi lama karena menghilangkan spasi kosong dan perhitungan apakah akan menghasilkan spasi atau karakter.Perbaikan bug berkat beatcracker.
sumber
~|[abc<0>cba]|~
test case. Coba ini:param($a)$a;(1..25|%{$i=$_;(-join([char[]]$a|%{(' ',$_)[$_-match'[a-z]'-and[math]::Max(0,($_-bor32)-96-$i)]})).TrimEnd()})-ne''
Java 8,
151147144143139 bytePenjelasan:
Coba di sini.
sumber
q ,
4237 byteTerima kasih kepada streetster!
solusi + penjelasan lama:
sumber
{(+)max[m]$(m:1+mod[.Q.a?(_)x]26)#'x}
untuk 37, tidak ingat bagaimana saya menyelesaikannya saat membuat pertanyaan, mungkin sangat mirip!_
, saya mengetikkanlower
q interpreter dan mendapatkannyak){$[~t&77h>t:abs@@x;.z.s'x;19<t;.z.s@. x;~t in 10 11h;'`type;_x]}
. karenanya memberikan jawaban saya dalam q hahaSOGL V0.12 ,
1211 byteCoba Di Sini!
Penjelasan:
sumber