Terinspirasi oleh C -directive #define
.
Tantangan
Diberikan satu frasa dengan beberapa alias, dan satu larik dengan masing-masing teks alias. Keluarkan frasa awal menggantikan setiap alias dengan teks masing-masing.
Sebuah alias didefinisikan oleh satu yang tajam #
diikuti oleh indeksnya dalam array (indeks mungkin mulai dari nol atau satu). Alias dapat berisi alias lain di dalam teksnya, dan Anda harus menyelesaikannya semua (mungkin secara rekursif). Anda dapat mengasumsikan alias tidak akan pernah mengalami infinite-loop. Alias tidak akan memiliki angka nol di depan ( #02
bukan alias di indeks 2
, melainkan alias di indeks 0
diikuti oleh teks 2
).
Anda dapat mengasumsikan array tidak akan melewati 20 item.
Anda dapat menulis suatu program, atau suatu fungsi atau bahkan #define
-akan menyenangkan :)
Anda juga dapat menggunakan metode input lain yang lebih cocok untuk bahasa Anda.
Contoh
phrase: "#0 & #3"
array: [
"Programming #1",
"Puzzles",
"Code",
"#2 Golf"
]
output: "Programming Puzzles & Code Golf"
Selangkah demi selangkah:
0> "#0 & #3"
1> "Programming #1 & #2 Golf"
2> "Programming Puzzles & Code Golf"
Karena ini adalah kode-golf , jawaban tersingkat dalam byte menang!
Sampel lain
phrase: "#0!"
array: [
"We are #1",
"#2",
"#3",
"#4 !",
"graduating"
]
output: "We are graduating !!"
phrase: "##0#1#0#21#3#4"
array: [
"a",
"m",
"z",
"n",
"g"
]
output: "#amaz1ng"
phrase: "##1#23"
array: [
"WEIRD",
"0 C",
"AS"
]
output: "WEIRD CAS3"
phrase: "#1#7#6y#4#7#10s#7b#11#0#0#11r#7#0h#6#5#2#5#9#4."
array: [
"t",
"#12#3",
"#11ga#3",
"#0#10v#11",
"#0h#10#8g",
"#7#8",
"a#8",
" ",
"n",
"o",
"i",
"e",
"P#9s#10"
]
output: "Positive anything is better than negative nothing."
Contoh di atas menggunakan Array dengan indeks mulai dari nol.
#0
seharusnya tidak muncul? Atau#01
valid tetapi bukan alias (yaitu hanya dibiarkan apa adanya)?#01
Jawaban:
JavaScript (ES6) 58
Fungsi rekursif
Uji
sumber
Mathematica, 74 byte
Tidak terlalu rumit. Sebagian besar hanya didedikasikan untuk membuat indeks.
sumber
Julia,
11210766 byteIni adalah fungsi rekursif yang menerima string suatu array dan mengembalikan string. Ini menggunakan pengindeksan berbasis 0.
Kita mulai dengan membangun string r sebagai string input s dengan semua kecocokan dari ekspresi reguler
#1?\d
diganti dengan elemen x yang sesuai dengan 1 + bilangan bulat yang diuraikan keluar dari kecocokan. Jika ini sama dengan s , kita mengembalikan s , jika tidak kita berulang, melewati r sebagai string.sumber
C,
269232Seperti yang diminta, satu
#define
pemecahan masalah! Makro C tidak bisa rekursif, jadi masalahnya harus dipecahkan secara iteratif. Makro mengambil 3 argumen; frasap
, arraya
, dan panjang arrayl
.Saya hanya menghapus ruang putih dari solusi saya yang tidak disunat; Saya tahu ada beberapa karakter lagi yang bisa saya selamatkan, tetapi saya rasa itu tidak akan membuat saya di bawah 200. Ini pasti bukan solusi kompetitif.Solusi sepenuhnya golf. Solusi yang tidak digabungkan dalam bentuk fungsi di bawah ini:Dan kode uji:
EDIT: Mengerjakan beberapa keajaiban golf. Ini sesingkat dan tidak terbaca yang saya pikir bisa didapat.
sumber