Ini adalah pos Cop. The Robber posting di sini .
Tugas Anda adalah mengambil input bilangan bulat N dan menghasilkan digit ke- N dalam urutan OEIS A002942 .
Urutan terdiri dari angka kuadrat yang ditulis mundur:
1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ...
Perhatikan bahwa nol di awal dipangkas jauh ( 100 menjadi 1 , bukan 001 ). Menggabungkan ini menjadi string (atau satu nomor panjang memberi):
1496152639446181121441
Anda harus menampilkan digit ke- N dalam string / angka ini. Anda dapat memilih untuk mengambil N sebagai diindeks 0 atau 1 diindeks (sebutkan yang mana yang Anda pilih).
Kasus uji (1-diindeks):
N = 1, ==> 1
N = 5, ==> 1
N = 17, ==> 1 <- Important test case! It's not zero.
N = 20, ==> 4
N = 78, ==> 0
N = 100, ==> 4
Kode Anda harus bekerja untuk angka hingga N = 2 ^ 15 (kecuali bahasa Anda tidak dapat menangani bilangan bulat 32 bit secara default, dalam hal ini N dapat lebih rendah).
Polisi:
Anda harus menulis dua fungsi / program, dalam bahasa yang sama, yang melakukan hal yang sama. Anda harus memposting salah satu fungsi / program, serta jarak Levenshtein antara dua fungsi / program yang Anda tulis. Jarak Levenshtein diukur dalam karakter (jadi penambahan karakter dua byte akan menghasilkan LD = 1).
Kode yang tidak terungkap tidak boleh lebih panjang dari solusi asli (tetapi bisa dengan ukuran yang sama). Perampok akan berusaha untuk menulis kode dengan jarak Levenshtein yang Anda berikan (bisa berbeda dari kode Anda yang belum diungkap, asalkan berhasil).
Pemenangnya adalah pengajuan tanpa retak yang memiliki jarak Levenshtein terendah.
Anda dapat memeriksa jarak Levenshtein di sini!
Jika kiriman Anda tidak retak selama 7 hari maka Anda dapat mengungkapkan kode alternatif yang telah Anda tulis dan menandai kiriman Anda sebagai aman.
sumber
Jawaban:
Haskell , LD = 13, sudah retak
Cobalah online!
Saya memeriksa ulang bahwa nol di awal terpangkas;)
Penjelasan:
sumber
cQuents 0 , LD = 1, Cracked
Cobalah online!
Saya pikir ini tidak berfungsi untuk memimpin nol, tetapi sebenarnya - fungsi terbalik di cQuents dikodekan sebagai
int(reversed(str(n)))
.Penjelasan
sumber
JavaScript (ES6), LD = 103 ( retak )
Menggunakan jarak Levenshtein setinggi itu mungkin bukan strategi terbaik, tapi mari kita coba saja.
Uji kasus
Tampilkan cuplikan kode
Solusi yang dimaksudkan
Bagian yang dikodekan:
sumber
+
memastikan bahwa string yang dibalik dipaksa ke suatu Nomor.Python 2, 104 byte, LD = 21 Tidak Valid DAN Retak
PS Apakah jumlah ruang kosong dan komentar yang tidak terbatas diizinkan? Jika demikian, ini tidak akan sulit retak.sumber
\n
s (sekitar 50)6502 kode mesin (C64), LD = 1 ( retak )
Demo online , penggunaan: di
sys49152,n
manan
input 0-diindeks.Untuk kasus uji terakhir, Anda perlu sedikit kesabaran, karena mesin yang buruk ini harus melakukan jutaan bit-shift dan tambahan untuk menyajikan hasilnya kepada Anda;)
Bahasa di sini adalah kode mesin, jadi LD diukur dalam format ini - namun, untuk memberikan sesuatu untuk memulai, inilah program dalam
ca65
sumber assembler:... dan inilah skrip tautan untuk
ld65
:sumber
Perl 5 , 59 + 1 (
-a
) = 60 byte, LD = 55Cobalah online!
sumber
Java 8, (177 bytes) LD = 92 ( Cracked oleh @Arnauld )
(Saya sudah menggunakan kalkulator LD online ini. )
Ini mungkin tidak terlalu sulit jika Anda hanya bermain golf ini. :)
Penjelasan:
Coba di sini.
sumber
n->{String r="";for(int i=1;r.length()<=n+1;r+=new Long(new StringBuffer(i*i+++"").reverse()+""));return r.charAt(n);}
( 118 byte, 92 LD )Oktaf , LD = 63, Retak
Cobalah online!
Pengajuan adalah 77 byte, jadi Anda perlu mengganti sedikit =)
sumber
6502 kode mesin (C64), LD = 1, aman
Demo online , penggunaan: di
sys49152,n
manan
input 0-diindeks.Solusi yang dimaksudkan: (beda)
The
30
(opcodebmi
) diganti dengan90
(opcodebcc
). Ini sesuai dengan bagian berikut dalam sumber assembler:Ini bekerja karena kode ini memeriksa apakah angka lebih kecil dari 8.
cmp
Instruksi melakukan pengurangan untuk itu, mengatur bendera yang sesuai. Jadi, jika akumulator memegang angka lebih kecil dari 8, ini mengalir di bawah, membersihkan bendera carry, oleh karena itu instruksi cabang yang benar memangbcc
.bmi
(bercabang ketika negatif), seperti dalam kode asli, kebetulan bekerja di sini juga, karena angka yang dibandingkan cukup kecil, sehingga hasil pengurangan tersebut berakhir pada rentang negatif ($80-$ff
) ketika terjadi underflow.Demo online
Ini adalah versi yang disempurnakan / dipadatkan dari kiriman saya sebelumnya . Di antara beberapa trik lain untuk mengurangi ukuran, itu menghilangkan kode tidak berguna yang terkandung dan memungkinkan semacam "sederhana" *) retak. Secara keseluruhan, ukurannya dikurangi sebesar 16 byte. Kali ini, akan sedikit lebih sulit untuk menemukan program yang setara dengan LD 1 :)
*) mungkin masih cukup sulit untuk ditemukan, tentu saja :)
Sekali lagi, inilah
ca65
sumber assembler, untuk membantu memulai dengan kode:... dan inilah skrip tautan untuk
ld65
:sumber
Lua: LD = 1, retak
Tidak ada trik mewah di sini :)
sumber
Mathematica, LD = 43 retak
Cobalah online!
sumber
PHP, LD = 35 ( Retak )
1-diindeks
Cobalah online!
sumber
Python 3: LD = 9 | Retak
Ini harus cukup (sangat) mudah didapat: P
sumber
.lstrip("0")
bagian itu hanya dapat disalin.C ++, LD = 159
Diindeks 0, input masuk
argv[1]
, disusun pada GCC 7.2.0sumber
Groovy , 61 byte (LD = 23)
Cobalah online!
sumber