Pandu Alfabet
Diberikan array arah, di mana arah didefinisikan sebagai berikut:
NW N NE
W . E
SW S SE
Atau sebagai indeks (Anda dapat menggunakan indeks ini untuk arah alih-alih string di atas):
0 1 2
3 . 4
5 6 7
Anda dapat memilih salah satu format, mendukung keduanya tidak diperlukan oleh tantangan. Hasilkan String alfabet yang sesuai yang mewakili jalur yang digambar, dimulai dengan A. Jumlah arah tidak akan pernah melebihi 25, yang berarti bahwa itu tidak akan pernah bisa melewati Z
, sehingga Anda tidak harus menangani skenario ini. Tidak ada format input lain yang akan diterima kecuali Anda dapat menjelaskan mengapa format ini tidak berfungsi karena keterbatasan bahasa. Ini lebih mudah dijelaskan dengan menggunakan contoh yang dikerjakan secara verbal.
Jadi, mari kita lihat contoh cepat:
[E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1]
Selalu mulai dengan A.
A
Pergi ke Timur ke B.
A-B
Pergi Tenggara ke C.
A-B
\
C
Pergi ke Utara ke D.
A-B D
\|
C
Kembali ke Selatan ke E, menimpa C.
A-B D
\|
E
Terus ke Selatan selama 2 siklus ke F dan G.
A-B D
\|
E
|
F
|
G
Pergi ke Barat Laut ke H.
A-B D
\|
E
|
H F
\|
G
Pergi ke Barat ke I.
A-B D
\|
E
|
I-H F
\|
G
Berakhir ke Utara di titik J.
A-B D
\|
J E
| |
I-H F
\|
G
Nilai akhir yang akan Anda kembalikan adalah dengan membaca grafik terakhir dari kiri ke kanan, atas ke bawah:
ABD
JE
IHF
G
Yang menghasilkan:
ABDJEIHFG
Ini adalah kode-golf , kemenangan byte-count terendah.
A
sehinggaA
tidak akan hasil pertama dicetak?Jawaban:
MATL ,
64585750464037363530 byteCobalah di MATL Online
Penjelasan
sumber
JavaScript (ES6),
1081079487 byteMenyimpan 13 byte kekalahan, terima kasih kepada Titus!
Disimpan 7 byte lebih, terima kasih kepada edc65!
Bagaimana itu bekerja
Rumus
(d += d > 3) * 9 - d % 3 * 8 - 28
menerjemahkan petunjuk0..7
ke dalam offset berikut:Kami menggunakan offset ini untuk memindahkan pointer
p
ke array satu dimensir
dan menulis huruf pada posisi yang dihasilkan.Kami beralih
[i = 9, ...a]
bukan hanyaa
untuk memasukkan huruf awal 'a'. Karena kita menginisialisasii
untuk9
pada saat yang sama, kami memperkenalkan khusus offset 54 (hasil dari rumus di atas untukd = 9
). Setelah iterasi pertama,p
sama646 + 54 = 700
, yang meninggalkan hanya cukup ruang untuk mendukung hingga 25 bergerak ke North-West:25 * -28 = -700
. Itu sebabnyap
diinisialisasi ke646
.Maka kita hanya harus bergabung dengan array untuk mendapatkan string terakhir kita. Nilai yang tidak terdefinisi di antara huruf diabaikan begitu saja
join()
.sumber
d+=d>3,p+=d*9-d%3*8-28
menghemat 11 byte.i
dalam definisi array, menghemat 2 byte lebih)(++i).toString(36)
(masih tidak berusaha memahami matematika Anda, tetapi tampaknya berhasil)Oktaf,
145138131123105103908785 byteCobalah secara Online
Terima kasih kepada Suever 2 byte yang disimpan!
Jawaban sebelumnya 103 byte:
Cobalah secara Online!
Pertama coba 145 byts
Beberapa Penjelasan
sumber
image
paket bagian dari bytecount Anda harus memuat paket gambarpkg load image
pkg load *
di awal. ideone.com mungkin menjadi pilihan yang lebih baikpkg install -auto image-1.0.0.tar.gz
sehingga dapat dimuat secara otomatis. Silakan lihat manualMATLAB,
8785 bytemenyimpan 2 byte berkat Luis Mendo
sumber
'%&''?AYZ['-64
trik yang bagus ... sebenarnya 66 byte jika Anda menulis ulang dalam oktafPHP, 93 byte
Beroperasi pada larik tunggal seperti jawaban Kodos Johnson .
Tetapi ini memiliki lebih banyak ide yang saya posting sendiri.
mengambil angka dari argumen baris perintah. Jalankan dengan
-nr
.memindahkan kursor
perhitungan awal:
bermain golf:
menggabungkan tugas tidak menyimpan apa pun, tetapi jenis meningkatkan keterbacaan:
kerusakan
sumber
Python 2,
180 178176 bytesumber
PHP, 121 byte
Ini berjalan di baris perintah dengan
-r
bendera dan mengambil array char (string) indeks sebagai argumen.sumber
""<$n=$argv[1][$i]
alih - alih($n=$argv[1][$i])!=null
R, 160 byte
sumber