Anda diberi integer non-negatif (basis 9) yang terdiri dari digit 0 hingga 8 seperti biasa. Namun jumlah digit dalam angka ini (tanpa nol di depan) adalah kotak prefek.
Karena itu, jumlahnya dapat diatur dalam kotak persegi (dengan urutan bacaan masih dipertahankan).
Contoh dengan 1480 (1125 basis 10):
14
80
Sekarang mari kita setiap digit dalam grid nonary seperti itu menunjukkan gerakan ke ruang grid lain (dengan kondisi batas periodik ):
432
501
678
Ini mengatakan itu
0 = stay still
1 = move right
2 = move right and up
3 = move up
...
8 = move right and down
Jadi, jika dalam grid 1480 Anda mulai dari 4, Anda kemudian bergerak ke atas (ingat pbc) dan pergi ke 8, yang berarti Anda bergerak ke kanan dan ke bawah kembali ke 4, memulai siklus dengan periode 2.
Secara umum proses ini dilanjutkan sampai Anda mendapatkan 0 atau siklus diperhatikan. (A 0 dianggap sebagai siklus dengan periode 1.)
Dalam kasus 1480, periode akhirnya mencapai pada masing-masing 4 digit awal 2 2 2 1
masing - masing.
Untuk kisi yang lebih besar angka-angka ini mungkin lebih besar dari 8, tetapi kita masih dapat menggunakannya sebagai "digit" dalam angka nonary baru (hanya koefisien 9 ^ seolah-olah mereka digit):
2*9^3 + 2*9^2 + 2*9 + 1 = 1639 (base 10) = 2221 (base 9)
Kami akan menyebutnya kekuatan dari nomor nonary aslinya. Jadi kekuatan 1480 adalah 1639 (basis 10) atau, setara, 2221 (basis 9).
Tantangan
Tuliskan program terpendek yang memberitahukan apakah kekuatan angka nonary lebih besar dari, kurang dari, atau sama dengan angka nonary itu sendiri. (Anda tidak perlu menghitung kekuatannya.)
Input akan berupa nomor nonary non-negatif yang berisi angka kuadrat (dan tidak ada angka nol di depan selain kasus khusus 0 itu sendiri). Itu harus berasal dari baris perintah atau stdin.
Outputnya harus masuk ke stdout sebagai:
G if the strength is larger than the original number (example: 1480 -> strength = 2221)
E if the strength is equal to the original number (example: 1 -> strength = 1)
L if the strength is less than the original number (example: 5 -> strength = 1)
Tantangan Bonus Menyenangkan:
Apa input tertinggi yang dapat Anda temukan yang setara dengan kekuatannya? (Apakah ada batasan?)
Jawaban:
Python 2,
213209202Sunting: Dihapus hubungan arus pendek, yang kadang-kadang salah. Lihat di bawah.
(Sebagian besar) Algoritma yang sama dengan @ KS, tetapi sangat banyak golf.
Golf:
213: Solusi hubungan pendek, cacat.
209: Solusi kerja pertama.
202: Menggabungkan dua string lookup menjadi satu.
Sunting: Saya baru menyadari bahwa program ini, dan juga KSab, cacat karena mengabaikan panjang siklus multidigit. Contoh kegagalan:
Sementara 3 memiliki panjang siklus 2, dan dengan demikian algoritma di atas hubung singkat ke 'L', ini sebenarnya harus mengembalikan 'G', karena panjang siklus 14 pada digit kedua lebih dari mengatasi itu. Karena itu saya telah mengubah program. Itu juga menjadi lebih pendek, cukup lucu. Untuk menguji program Anda, gunakan
3117275531177455
. Itu harus kembaliG
.sumber
Python 296
Sebenarnya tidak terlalu efisien, hanya memeriksa digit sebanyak yang diperlukan.
Adapun angka sama dengan kekuatan mereka, saya pikir satu-satunya solusi adalah, untuk setiap N x N persegi hingga N = 8 persegi yang mengandung N di setiap ruang. Pemikiran saya adalah karena setiap angka dalam satu lingkaran harus memiliki angka yang sama (panjang lingkaran), setiap loop harus semuanya dalam satu arah. Ini tentu saja berarti bahwa ukuran loop harus N (dan setiap elemen harus N). Saya cukup yakin bahwa logika ini dapat diterapkan untuk kuadrat dan loop dari berbagai ukuran, yang berarti tidak ada kuadrat yang sama dengan kekuatan mereka selain yang pertama 8.
sumber
3117275531177455
, karena ukuran lingkaran lebih besar dari 8. Lihat posting saya.cmp
.CJam - 81
Cobalah di http://cjam.aditsu.net/
Mungkin bisa bermain golf lagi.
sumber
Lua - Belum main golf
Hanya menempatkan di sini untuk diamankan. Saya akan bermain golf (dan menerapkan "Untuk grid yang lebih besar angka-angka ini mungkin lebih besar dari 8, tetapi kita masih dapat menggunakannya sebagai" digit "") nanti. Namun bekerja.
sumber