Untuk masing-masing dari sembilan kata yang mirip membingungkan ini , tetapkan angka 1-9 dengan cara apa pun yang Anda suka:
though
through
thorough
Thoreau
throw
threw
trough
tough
troll
Tulis program yang menggunakan string. Jika input adalah salah satu dari sembilan kata ini, masukkan angka yang Anda tentukan. Jika input bukan salah satu dari kata-kata di atas, program dapat melakukan apa saja (termasuk kesalahan atau loop selamanya).
Kata-katanya peka huruf besar-kecil, misalnya Thoreau
, harus menghasilkan angka dari 1-9 tetapi thoreau
tidak harus melakukan hal yang sama.
Contoh
Misalkan Anda menetapkan angka sebagai berikut:
though 9
through 2
thorough 7
Thoreau 6
throw 3
threw 5
trough 4
tough 1
troll 8
Lalu kapan tough
input, 1
harus output.
Kapan through
input, 2
harus output.
Kapan throw
input, 3
harus output.
. . .
Kapan though
input, 9
harus output.
Semua input lain dapat melakukan apa saja.
Detail
- Ambil string input melalui stdin atau baris perintah dan output ke stdout.
- Output mungkin berisi satu baris baru.
- Alih-alih program, Anda dapat menulis fungsi yang mengambil string dan mencetak hasilnya secara normal atau mengembalikannya.
- Pengajuan terpendek dalam byte menang .
sumber
find
metode string Python . Kemudian aturannya berubah. Gagasan pintar tidak begitu pintar sekarang.Jawaban:
CJam,
11 97 byteBagaimana itu bekerja :
Kami memanfaatkan fakta bahwa jumlah kode ASCII + 2 yang dimodifikasi dengan 11 memberikan urutan 1 hingga 9 yang sangat bagus dan kemudian 10 untuk sembilan kata yang bersangkutan. Berikut pemesanannya:
Penjelasan kode :
4 byte disimpan berkat user23013
Cobalah online di sini
sumber
q1b2+B%
.Pyth, 8 karakter
Cobalah online: Demonstrasi atau Test Suite
Saya menggunakan tugas:
Penjelasan:
Btw, saya menemukan angka ajaib 8109 dengan menggunakan script ini:
fqr1 10Sme%CdT.z1
.sumber
Python 2,
9254 byteString indeks dibuat dengan
for word in words: print chr(hash(word)%95+32),
. Seperti yang ditunjukkan dalam jawaban Jakube, fungsi hash akan memberikan hasil yang berbeda tergantung pada versi Python. String indeks ini dihitung pada 64 bit Python 2.7.6.Lebih panjang (92 byte) tetapi kurang samar jawabannya:
Program mengembalikan 1-9 meskipun melalui lemparan Thoreau menyeluruh melalui troll tangguh dalam urutan itu. Ketika input tidak ditemukan, find akan mengembalikan -1 yang dengan mudah berubah menjadi nol setelah
+1
.sumber
0
barang tidak lagi diperlukan. Maaf karena mengubahnya pada Anda.Python 2.7.9 versi 32 bit, 22 byte
Perhatikan, versinya sangat penting di sini. Anda akan mendapatkan hasil yang berbeda jika Anda menggunakan Python versi 64 bit. Karena
hash
metode ini akan menghitung nilai hash 64 bit, bukan 32 bit.Tugasnya adalah:
Cobalah online: http://ideone.com/Rqp9J8
sumber
sorted(...)==range(1,10)
, saya berhenti.Pyth, 7 byte
Saya menggunakan tugas berikut:
Cz
menginterpretasikan input sebagai nomor 256 basis. Kemudian, kita ambil mod 31 ini, kurangi 1, dan ambil hasilnya mod 10. Kodesemu yang sepadan:Demonstrasi , uji harness .
sumber
Python 2, 27 byte
Dengan tugas ini:
Beberapa variasi dimungkinkan, misalnya
sumber
Japt , 6 byte
Cobalah | Periksa semua kata
Penjelasan
Mengambil keuntungan dari fakta bahwa, ketika mengurai
n
string dasar ke integer, JavaScript akan berhenti mengurai jika bertemu dengan digit yang lebih besar darin
dan mengembalikan hasilnya ke titik itu. Dengan menggunakan basis-32 di sini (digit0-v
) hurufw
s pada "throw" dan "throw" pada dasarnya diabaikan.JavaScript, 22 byte
Terjemahan langsung - tampaknya tidak layak untuk diposkan secara terpisah.
sumber
C (gcc) , 66 byte
Cobalah online!
sumber
-O
flag compiler.h;f(char*s){for(h=33;*s;)h^=*s++;h=index("(Z5qW]2@H",h)-"H"+9;}
Java 8,
5325 byteatau
Pelabuhan @Optimizer 's CJam jawaban, karena (kemungkinan besar) tidak dapat dilakukan setiap pendek di Jawa ..
Cobalah online.
sumber
parseInt
, bukan? Apakah port solusi saya tidak lebih pendek?parseInt
basis yang diberikan, tapi sayangnya itu cukup byte karena persyaratan kelas statis:Long.parseLong(...,32)
sebagai varian terpendek Selain itu, tampaknya gagal untuk"throw"
(dan"threw"
juga) di Jawa karena beberapa alasan .w
tampaknya di luar kisaran base-32 (dan menggunakan 33 memberikan hasil yang salah).Jelly , 7 byte
Cobalah online!
Port Jelly yang membosankan dari jawaban CJam yang fantastis.
sumber