Santa membutuhkan bantuan menentukan berapa banyak elf yang akan dia perlukan untuk membantunya mengirimkan hadiah ke setiap rumah.
Batubara jauh lebih berat daripada hadiah, jadi santa akan membutuhkan tiga elf untuk setiap orang nakal di rumah. Hanya diperlukan dua elf untuk membantu santa membawa hadiah.
Pada peta santa, sebuah rumah diwakili oleh a *
, dan setiap rumah dibagi oleh a +
.
Akan ada angka di kedua sisi rumah - yang di sebelah kiri mewakili jumlah orang nakal di rumah, dan yang di sebelah kanan mewakili jumlah orang baik di rumah. Jika tidak ada angka di satu sisi itu ditafsirkan sebagai 0.
Santa tidak mengunjungi mereka yang tidak semangat natal (mereka bahkan tidak pantas mendapatkan batu bara), jadi kadang-kadang, sebuah rumah mungkin tidak memiliki nomor di kedua sisinya. Dalam hal ini, santa tidak membutuhkan bantuan elf mana pun
Misalnya, salah satu peta santa mungkin terlihat seperti ini
1*3+2*2+1*+*2
Di rumah pertama ada 1 nakal dan 3 bagus, santa akan membutuhkan sembilan elf. Dalam kedua, ada 2 nakal dan 2 bagus, santa akan membutuhkan sepuluh peri. Di rumah ketiga ada 1 nakal dan 0 bagus, santa akan membutuhkan tiga elf, dan di rumah terakhir ada 0 nakal dan 2 bagus, santa akan membutuhkan empat elf.
Ini adalah versi salah satu peta santa yang terlalu disederhanakan. Biasanya, peta santa memiliki banyak garis, dan berada dalam bentuk persegi agar lebih sesuai dengan daftar. Peta normal mungkin terlihat seperti ini (a \n
di akhir setiap baris)
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
Dalam peta ini, kebutuhan santa ((1 + 0 + 0 + 1 + 2 + 3 + 1 + 0 + 0 + 0 + 4 + 1 + 0 + 0 + 1 + 2 + 3 + 2 + 0 + 0) * 3) + ((2 + 0 + 4 + 0 + 4 + 0 + 6 + 0 + 0 + 0 + 2 + 1 + 4 + 3 + 0 + 3 + 10 + 0 + 5 + 0) * 2)
= 151 elf
Tantangan
Bantu santa menentukan berapa banyak elf yang ia butuhkan untuk mengirimkan barang ke setiap rumah!
Rumah
- Sebuah rumah diwakili oleh a
*
- Rumah dibagi oleh
+
- Angka di sebelah kiri rumah melambangkan jumlah orang nakal (tidak ada angka berarti 0)
- Angka di sebelah kanan melambangkan jumlah orang baik (tidak ada angka berarti 0)
- Mungkin ada baris baru (
\n
) di input, yang juga harus ditangani sebagai pemisahan
Peri
- Santa membutuhkan bantuan dari tiga elf untuk orang nakal (batu bara jauh lebih berat daripada hadiah)
- Santa membutuhkan bantuan dari dua peri untuk orang-orang baik
- Jika tidak ada nomor di kedua sisi, santa tidak akan mengunjungi rumah itu, dan karenanya tidak memerlukan elf
Melakukan apa
Cetak jumlah elf yang santa butuhkan untuk membantunya mengantarkan hadiah ke rumah. Karena semua yang perlu diketahui Santa adalah berapa banyak elf yang harus dibawa, Anda hanya perlu mencetak jumlah elf tambahan yang ia butuhkan untuk daftar rumah
Uji Kasus
1*1 => 5
1*2 => 7
2*1 => 8
1* => 3
*1 => 2
* => 0
1*1+1*1 => 10
1*2+2*1 => 15
1*+*1 => 5
1*1+*+1*1 => 10
*+*+*+* => 0
Aturan
- Input dapat diambil sebagai argumen dalam suatu fungsi, atau dari STDIN atau yang setara
- Outputnya bisa berupa nilai balik suatu fungsi, atau dicetak ke STDOUT atau setara
- Input hanya akan berisi angka,
+
,*
, dan baris\n
- Hasilnya seharusnya hanya jumlah total elf yang dibutuhkan bantuan Santa untuk dikirimkan pada Natal
- Celah standar berlaku
Mencetak gol
Giring Santa penuh dengan hadiah yang memberinya ruang lebih sedikit untuk menjalankan kode, jadi dia membutuhkan kode terpendek yang bisa dia dapatkan (jangan khawatir jika ini tidak masuk akal. Jika Anda mempertanyakan logika Santa, Anda akan berakhir di daftar nakal ). Karena alasan Santa yang BENAR , pengajuan terpendek dalam byte akan menang!
Papan peringkat
Ini adalah Stack Snippet yang menghasilkan leaderboard dan ikhtisar pemenang berdasarkan bahasa.
Untuk memastikan jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama menggunakan templat Penurunan harga berikut
## Language Name, N bytes
Di mana N adalah ukuran, dalam byte, dari kiriman Anda
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (misalnya, mencoret skor lama, atau menyertakan bendera dalam jumlah byte), pastikan saja skor sebenarnya adalah angka terakhir di tajuk Anda
## Language Name, <s>K</s> X + 2 = N bytes
max(naughty) + max(nice)
elf untuk seluruh rute? Saya pikir dia memiliki banyak peri terbang bersamanya, tetapi mungkin Anda memiliki informasi orang dalam tentang itu dan saya perlu melihat lebih dekat tahun ini. :)hello-world.c
. Elf pekerja dengan bersemangat dialokasikan ke target ketika Jojodmo berkata (Saya yakin saya tahu Jojodmo, dia pasti sysadm kami) dan kemudian menggunakan panggilan balik untuk memberi tahu kapan saatnya dimasukkan kembali ke kolam giring atau ketika seorang anak melihat mereka.Jawaban:
Pyth, 21 byte
Contoh multi-line
Suite uji satu baris
sumber
JavaScript (ES6), 52 byte
Penjelasan
Mengubah input menjadi pernyataan JavaScript yang valid. Mengganti semua
*
dengan.0*3+
dan semua simbol (non-digit) lainnya dengan.0*2+
. Misalnya8*9+*10
menjadi8.0*3+9.0*2+.0*3+10
. Akhirnya menambahkan.0*2
sampai akhir untuk hitungan bagus terakhir. Ini berfungsi karenan.0
=n
dan.0
=0
.Uji
Tampilkan cuplikan kode
sumber
.0
gagasan itu.Flex + C,
11290 byteKarakter pertama adalah spasi. Kompilasi dengan:
Membaca dari STDIN, menulis ke STDOUT. Input diakhiri oleh EOF (Ctrl + D di konsol).
sumber
Mathematica, 70 byte
Penggunaan
StringExtract
untuk mengekstraksi nomor individual.sumber
CJam, 23 byte
Uji di sini.
Penjelasan
sumber
Serius,
3830 byteHex Dump:
Versi baru ini mematahkan penerjemah online, tetapi berfungsi dengan baik secara lokal. Ini contoh menjalankan:
Penjelasan:
Versi lama:
Hex Dump:
Cobalah secara Online
Penjelasan:
Ini mungkin bisa lebih pendek jika saya hanya mengonversi setiap baris secara terpisah dan menyimpulkan semuanya pada akhirnya. Saya akan memeriksanya nanti.
sumber
PowerShell, 52 byte
Menggunakan variasi user81655 's
.0
trikVersi tidak disatukan
Contoh penggunaan
sumber
Swift 2,
283211 BytesIni dapat diuji di SwiftStub, di sini
Tidak disatukan
sumber
Python 3,
141114112 byteMengambil input multi-line seperti ini
c("1*2+*+*4+1*\n2*4+3*+1*6+*\n*+*+4*2+1*1\n*4+*3+1*+2*3\n3*10+2*+*5+*")
Tidak Disatukan:
sumber
Saya sangat terlambat, tapi saya ingin mencobanya.
Ruby ,
8455 byteSaya menemukan pertanyaan ini lagi setelah bertahun-tahun dan memikirkan jawaban baru sebelum saya menyadari saya sudah menjawab ini sebelumnya. Aduh! Bagaimanapun, inilah jawaban yang ditingkatkan secara drastis.
Cobalah online!
Jawaban 84 byte sejak saya pertama kali menjawab ini 2 tahun yang lalu:
Cobalah online!
sumber
Python 3 , 96 byte
Cobalah online!
101 byte tanpa regex
Cobalah online!
sumber