Tugas Anda adalah membuat program yang melakukan hal berikut:
- Anda harus mengambil nomor. (Positif, negatif, fraksi adalah input yang memungkinkan)
- Jika negatif, Anda membalikkan quine. dan meniadakan angka itu (Menjadi positif)
- Kemudian Anda ulangi <integer part dari nomor input> kali dan mencetak <lantai pertama (bagian pecahan dari nomor input * panjang)> dari program sumber Anda. Jika bilangan bulat, maka bagian pecahan adalah nol.
-10% bonus jika program Anda bukan palindrome.
Contoh
Jika program Anda adalah "ABCDEFG", maka
1.
5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG
Penjelasan
ABCDEFG lima kali
2.
-2
GFEDCBAGFEDCBA
Penjelasan
GFEDCBA (ABCDEFG terbalik) 2 kali
3.
7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC
Penjelasan
ABCDEFG 7 kali diikuti oleh huruf ABC (3 pertama (lantai (0,5 * 7) = lantai (3,5) = 3) pada ABCDEFG)
4.
-0.3
GF
Penjelasan
GFEDCBA (ABCDEFG terbalik) 0 kali diikuti oleh GF (2 pertama (lantai (0,3 * 7) = lantai (2.1) = 2) huruf pada GFEDCBA (ABCDEFG terbalik))
5.
0
<empty>
Penjelasan:
<empty> di sini berarti program Anda tidak menghasilkan. ABCDEFG nol kali yang didefinisikan sebagai string kosong.
-
dan.
secara manual (mewakili fraksi sebagai bilangan bulat positif). Atau Anda bisa mengalihkan perhatian Anda ke tantangan berikutnya. ;) (Tidak semua bahasa dapat berpartisipasi dalam setiap tantangan, tetapi selama tantangan itu tidak dengan sengaja mengesampingkan bahasa individu yang sewenang-wenang, itu sepenuhnya baik-baik saja. Pikirkan semua pemrosesan audio / gambar atau tantangan sistem file.)Jawaban:
CJam,
2826 byte * 0,9 = 23,4Terima kasih kepada Sp3000 untuk menghemat 2 byte.
Uji di sini.
Penjelasan
sumber
Vitsy, 34 * 0,9 = 30,6 Bytes
Terima kasih kepada @ Sp3000 karena menunjukkan kesalahan pada kode saya!
Merayu. Guru Fisika saya mengingatkan saya bahwa saya memiliki fungsi kekuatan untuk membantu saya dalam hal ini. Sosok pergi.
sumber
Perl, 104 byte - 10% = 93,6
102 byte + 2 byte untuk
-i
- 10% karena tidak menjadi palindrom. Input diberikan sebagai argumen untuk-i
(misalnya di-0.3
atas).Bagaimana itu bekerja
Solusi ini didasarkan pada quine berikut:
Ini berfungsi sebagai berikut. Pertama, atur
$_
ke string:Selanjutnya, panggil
eval
, yang berfungsi$_
secara default. Ini panggilanprint
dengan satu argumen, string literal:Karena string ini dikutip ganda, variabel diinterpolasi. Setelah interpolasi
$_
, nilai string adalah:Saat dicetak, ini menghasilkan:
yang merupakan kode sumber dari program itu sendiri.
Yang menyenangkan tentang quine ini adalah Anda dapat menanamkan kode arbitrer di dalam string menjadi
eval
'd.Berikut ini rincian solusi lengkap:
sumber
Mathematica, 139 - 10% = 125,1 byte
Perhatikan ruang trailing. Spasi putih, notasi standar, dll. Adalah hasil dari
ToString[#0, InputForm]
.sumber
Haskell, 158 * 0,9 = 142,2 byte
Fungsi quine.
sumber
Python 2, 193 byte - 10% = 173,7
Kesalahan aktif
0
, tetapi, mengabaikan STDERR, Anda masih mendapatkan output kosong.sumber