Tulis sebuah program dalam bahasa apa pun yang membaca input dari stdin dan mengeluarkan output yang sedikit dimodifikasi ke stdout. Program harus meminjam beberapa karakter dari input dan output sebagai awalan sebanyak mungkin *language-name* is awesome!
diikuti oleh baris baru dan kemudian apa yang tersisa dari input.
- Masukan tidak mengandung karakter huruf besar.
- Jika karakter pertama dari nama bahasa tidak ada dalam string, hanya karakter baris baru yang harus dipinjam.
- Jika tidak ada karakter baris baru dalam input, output input tidak dimodifikasi.
- Tidak masalah karakter mana yang Anda pinjam.
Saya menggunakan \n
sebagai karakter baris baru ( 0x0a
) untuk menghemat ruang saat menulis. Program yang sebenarnya seharusnya hanya peduli pada karakter baris baru yang sebenarnya, bukan \n
string.
Contoh: python.
masukan: abcdefghijklmnopqrstuvwxyz\n0123456789
Output: python\nabcdefgijklmqrsuvwxz0123456789
Sejak input tidak memiliki spasi, kita tidak bisa terus meskipun kita memiliki cukup karakter untuk kata berikutnya: is
.
Contoh: C.
input: i don't see anything!
output: i don't see anything!
C tidak ditemukan dalam string, jadi tidak ada modifikasi yang mungkin. Juga, tidak ada karakter baris baru hadir.
Contoh: C ++.
input: i don't\nsee anything!
output: \ni don'tsee anything!
C tidak ditemukan dalam string, jadi tidak ada modifikasi yang mungkin.
Contoh: Obj-C.
input: objectively, clojure is amazing.\nq.e.d.
output: obj\nectively, clojure is amazing.q.e.d.
Input berisi cukup banyak karakter untuk ditulis obj
tetapi -
tidak ada.
Hitungan byte kode sumber Anda dikurangi hitungan byte nama bahasa Anda, utf-8 yang disandikan (jika memungkinkan), adalah skor Anda; kemenangan terendah!
i don't\nsee anything!
sebagai test case?Jawaban:
Pyth, 37 byte
Kode sumber panjangnya 41 byte . Cobalah online.
Bagaimana itu bekerja
sumber
Python, 186 - 6 = 180
Cobalah online
sumber
Python, 146 byte
sumber
Ceylon, 235 - 6 = 229
void a(){variable value i="";variable value r="\nceylon is awesome!";while(exists l=process.readLine()){i=i+"\n"+l;}i=i.rest;for(j->c in r.indexed){if(c in i){i=i.replaceLast(c.string,"");}else{r=r[0:j];break;}}print(r.rest+r[0:1]+i);}
Ini adalah versi yang diformat dan berkomentar:
Ini digunakan
replaceLast
alih-alihreplaceFirst
karena lebih pendek.Beberapa contoh input dan output dalam format yang sama seperti pada pertanyaan:
abcdefghijklmnopqrstuvwxyz\n0123456789
→ceylon\nabdfghijkmpqrstuvwxz0123456789
i don't see anything!
→i don't see anything!
i don't\nsee anything!
→\ni don't see anything!
objectively, closure is amazing.\nq.e.d.
→ceylon is a\nobjectivel, sureiamzng.\q..d.
sumber
JavaScript (ES6) 90 (100-10)
Sebagai fungsi mengembalikan ouput yang diminta. Sulit untuk diimplementasikan dengan I / O, karena pengganti STDIN yang biasa adalah
prompt()
, yang tidak menerima baris baru di dalam string input.Sebagai fungsi dengan output nyata (menggunakan
alert
) jumlah byte adalah 107Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6 (menerapkan operator sebar dan fungsi panah - Saya menggunakan FireFox)
sumber
Perl, 72 - 4 = 68 byte
Termasuk 2 sakelar.
Penjelasan : Untuk setiap karakter dalam string
"\nperl is awesome"
, hapus karakter yang sesuai dari string input ($_
) hingga kami menemukan karakter yang tidak ada di$_
. Karakter yang cocok disimpan di$p
mana diawali dengan$_
yang kemudian dicetak.The
-0
beralih membaca di masukan lengkap daripada line-by-line dan-p
switch membuat masukan membaca dan mencetak output implisit.sumber
JavaScript (ES7),
101107 - 10 = 97Itu lebih pendek sebelumnya, dan bahkan bekerja pada keempat kasus uji, tetapi ternyata saya melewatkan aturan, jadi ....
Berfungsi dengan baik di Firefox 42. Ini awalnya dimulai pada 119 byte, tetapi trik dari jawaban @ edc65 membantu mempersingkat banyak. Saya pikir masih ada ruang untuk perbaikan. Seperti biasa, saran diterima!
sumber
obj
->job
, tidak boleh dimodifikasi (aturan 3)is awesome
dan itu masih akan bekerja dengan baik pada mereka berempat. Saya akan memperbaiki ASAP ini.