Tuliskan program sesingkat mungkin sehingga ketika Anda menggabungkan karakter pertama dan setiap karakter ke-9 setelah itu ke dalam program baru, hasilnya adalah N. Ini harus bekerja untuk N = 1, 2, ..., 16.
Cara lain untuk mengatakannya adalah, jika Anda menghapus semua karakter dari program Anda kecuali yang pertama dan setiap yang ke-1 setelah itu, output dari kode yang tersisa harus N.
Contoh
Jika kode Anda
ABCDEFGHIJKLMNOP
N = 1 menghasilkan ABCDEFGHIJKLMNOP
. Menjalankan ini seharusnya menghasilkan 1.
N = 2 menghasilkan ACEGIKMO
. Menjalankan ini seharusnya menghasilkan 2.
N = 3 menghasilkan ADGJMP
. Menjalankan ini seharusnya menghasilkan 3.
N = 4 menghasilkan AEIM
. Menjalankan ini seharusnya menghasilkan 4.
N = 5 menghasilkan AFKP
. Menjalankan ini harus menghasilkan 5.
N = 6 hasil dalam AGM
. Menjalankan ini harus menghasilkan 6.
N = 7 hasil dalam AHO
. Menjalankan ini seharusnya menghasilkan 7.
N = 8 menghasilkan AI
. Menjalankan ini seharusnya menghasilkan 8.
N = 9 menghasilkan AJ
. Menjalankan ini seharusnya menghasilkan 9.
N = 10 hasil dalam AK
. Menjalankan ini akan menghasilkan 10.
N = 11 menghasilkan AL
. Menjalankan ini seharusnya menghasilkan 11.
N = 12 menghasilkanAM
. Menjalankan ini seharusnya menghasilkan 12.
N = 13 menghasilkan AN
. Menjalankan ini seharusnya menghasilkan 13.
N = 14 menghasilkan AO
. Menjalankan ini harus menghasilkan 14.
N = 15 hasil dalam AP
. Menjalankan ini akan menghasilkan 15.
N = 16 menghasilkan A
. Menjalankan ini seharusnya menghasilkan 16.
Detail
- Semua karakter diperbolehkan, ASCII dan non-ASCII. (Baris baru dan ASCII yang tidak dapat dicetak diizinkan juga. Perhatikan bahwa carriage return dan feed feed dihitung sebagai karakter yang berbeda.)
- Skor Anda adalah panjang karakter program yang tidak diubah (misalnya 15). Skor terendah menang.
- Skor di bawah 16 jelas tidak mungkin karena setidaknya dua program yang diubah akan sama.
- Output mungkin ke file atau stdout atau hal lain yang masuk akal. Namun, output dari 16 program yang berbeda semua harus pergi ke tempat yang sama (misalnya tidak ok jika
AO
pergi ke stdout tetapiA
pergi ke file). Tidak ada input. - Output harus dalam desimal, bukan hex. Output aktual seharusnya hanya berisi 1 atau 2 karakter yang membentuk angka dari 1 hingga 16, tidak ada yang lain. (Hal-hal seperti Matlab
ans =
tidak masalah.) - Program Anda tidak harus bekerja untuk N = 17 atau lebih tinggi.
sumber
ABCDEFGHIJKLMNO
danN = 15
, kode hasil adilA
.Jawaban:
APL, 49
Program yang diubah
Penjelasan
Saya akan mulai dari bawah karena akan menjelaskan lebih mudah
Ada dua fitur bahasa APL yang perlu diingat. Satu, APL tidak memiliki prioritas operator, pernyataan selalu dievaluasi dari kanan ke kiri. Dua, banyak fungsi APL berperilaku sangat berbeda tergantung jika diberikan satu argumen di sebelah kanan (monadik) atau dua argumen di sebelah kiri dan kanan (diad).
Monadic
⌊
adalah round down (fungsi lantai), Dyadic×
jelas-jelas merupakan perkalian,⍝
komentar di luar baris.Ini harus membuat ini jelas:
9:
⌊/9×1
/
adalah Mengurangi. Pada dasarnya dibutuhkan fungsi kiri dan array di sebelah kanan, masukkan fungsi antara setiap pasangan elemen array dan evaluasi. (Ini disebut "lipatan" dalam beberapa bahasa)Di sini, argumen yang tepat adalah skalar jadi
/
tidak melakukan apa-apa.8:
⌊|8×× 2
Monadik
×
adalah fungsi signum dan monadik|
adalah fungsi nilai absolut. Jadi,× 2
mengevaluasi1
dan|8×1
tentu saja8
7:
⌊11-4 ⍝
harus jelas6:
⌊⍟19×51⍝2
Monadic
⍟
adalah log natural.Jadi,
⍟19×51
evaluasikan keln(19×51) = 6.87626...
, dan⌊
bulatkan ke6
5:
⌊⍟21×○5
Monadic
○
mengalikan argumennya dengan π⍟21×○5
adalahln(21×5π) = 5.79869...
4:
⌊7|18××4×1 ⍝2
Dyadic
|
adalah fungsi mod yang×4×1
dievaluasi1
, dan7|18×1
sekarang18 mod 7 = 4
3: Nilai
⌊○⍟/119-××5 1 ⍝ 2
-nilai yang dipisahkan ruang adalah sebuah array. Perhatikan bahwa dalam APL, ketika sebagian besar fungsi skalar memberikan argumen array, itu adalah peta implisit.
Dyadic
⍟
adalah logJadi
××5 1
, adalah signum dari signum pada 5 dan 1, yang memberi1 1
,119-1 1
adalah¯118 ¯118
(¯
hanya tanda minus. APL harus membedakan antara angka negatif dan pengurangan), dan⍟/¯118 ¯118
log -118 (-118) = 12:
⌊⍟7⍟|21189×1×345× 1 ⍝⍝_2
Anda bisa mengatasinya sendiri
1: Yang
⌊⊃⍟○7⍟⍟1|/2111118 9⍝×-1 ×○3×4_5_× 1_ _⍝_⍝ __2
ini terdiri dari penggunaan yang lebih rumit
/
. Jikan
angka,F
adalah fungsi, danA
merupakan array, makanF/A
ambil setiap grupn
entri berturut - turutA
dan terapkanF/
. Misalnya,2×/1 2 3
ambil setiap pasangan entri berturut-turut (yang1 2
dan2 3
) dan berlaku×/
untuk masing-masing grup untuk memberikan2 6
Jadi,
1|/2111118 9
kembalikan saja2111118 9
(sebagaimana berlaku|/
untuk skalar). Kemudian,⍟○7⍟⍟
terapkan ln, lalu login 7 ke angka-angka itu, lalu gandakan dengan π dan ln lagi. Angka-angka yang keluar dari sisi lain adalah1.46424... 0.23972...
Di Sini,
⊃
hanya digunakan untuk memilih elemen pertama dari sebuah array.sumber
Python -
12011137 (generator:241218) - Hidup hash!Strategi:
Saya mencoba memulai setiap baris dengan hash sebanyak yang diinginkan
n
. Kemudian semua versi lain akan melewati baris ini sepenuhnya.Kesulitan utama, bagaimanapun, adalah untuk menambahkan jumlah hash yang benar sehingga menjalankan berikutnya akan mencapai awal baris berikutnya dengan tepat. Lebih lanjut, gangguan dengan versi lain dapat terjadi, misalnya versi 16 melompat langsung ke
print
perintah baris 5 dan seterusnya. Jadi ini banyak percobaan dan kesalahan dikombinasikan dengan skrip pembantu untuk pengujian cepat.Statistik:
1201113710661002 (88,1%)Kode:
Skrip uji:
Keluaran:
Pembaruan: Skrip penghasil!
Saya memikirkan solusi saya dan harus ada pola untuk menghasilkannya secara algoritmik. Jadi di sini kita mulai:
Itu membangun program baris demi baris:
i
denganprint i
perintah dani - 1
hash di antara masing-masing dua karakter tetangga.print i
(karena misalignment) atau versi apa punn
dengann in range(1, 17)
melempar pengecualian, tambahkan hash lain ke baris sebelumnya.Sebenarnya program yang dikembalikan lebih pendek daripada yang saya temukan secara manual pagi ini. (Jadi saya memperbarui solusi saya di atas.) Selanjutnya, saya cukup yakin tidak ada implementasi yang lebih pendek mengikuti pola ini. Tapi kamu tidak pernah tahu!
Versi golf -
241218:Perhatikan bahwa mungkin ada generator yang lebih pendek, misalnya dengan mengkode-keras jumlah hash yang diperlukan untuk setiap baris. Tapi yang ini menghitung sendiri dan bisa digunakan untuk N> 16.
sumber
p 1
bukanprint 1
.Befunge 93 - Lima juta tujuh ratus enam puluh lima ribu tujuh ratus tujuh puluh enam karakter
Saya menuntut untuk ditanggapi dengan serius ...
3 alasan mengapa. Alasan pertama: skrip befunge selalu 80x25, jadi apa pun itu, pasti ada sesuatu yang dikurangi pada baris dengan kode. Alasan ke-2: mengapa sesuatu sekitar 5,5 juta ruang adalah karena 720 720 adalah kelipatan umum terkecil dari 1 hingga 16 ... Berarti tidak akan ada kekacauan di sekitar saat kita melewatkan karakter. Alasan ke-3: wow, ini sangat tidak masuk akal.
sumber
209 karakter (Berbagai bahasa)
Saya hanya mencoba untuk menjaga hal-hal sederhana dan menghindari meletakkan apa pun di posisi dengan banyak faktor utama. Keuntungannya adalah kemampuan untuk berjalan dalam banyak bahasa scripting. Ini harus bekerja dalam bahasa apa pun yang tidak sengaja disalahgunakan dan memiliki fitur berikut:
Sebagai contoh,
Penerjemah baris perintah Python 2 (meskipun bukan dari file):
MATLAB (cukup ganti '#' dengan '%'):
NB Harus ada 17 ruang sebelum '1' pertama. Kalian tahu banyak bahasa, jadi tolong bantu saya daftar lebih banyak yang bisa dijalankan di (:
EDIT: Menambahkan unary + pada posisi 0 untuk Python untuk menghindari baris yang indentasi.
sumber
IndentationError
lari di baris perintah. Tapi mungkin Anda tidak menggunakan sintaks penurunan harga yang benar ketika memposting kode di sini.unexpected indent
konsol Python 2.7 juga. Tapi itu bekerja di Matlab jadi jangan khawatir. Saya percaya ini juga berfungsi di Ruby.CJam, 89 byte
Pendekatan ini tidak menggunakan komentar apa pun.
i
dilemparkan ke integer, jadi ini adalah noop di sini. Itu bisa diganti dengan spasi putih, tetapi surat-surat itu tampaknya lebih mudah dibaca bagi saya ...Cobalah online dengan menjalankan Kode berikut :
Contoh dijalankan
sumber
GolfScript, 61 byte
Ini mengambil keuntungan dari komentar (
#
) dan "super-komentar" yang tidak berdokumen (segala sesuatu yang mengikuti yang tidak cocok}
itu diabaikan secara diam-diam)._
adalah noop. Itu bisa diganti dengan spasi putih, tetapi garis bawah tampaknya lebih mudah dibaca oleh saya ...Cobalah online.
Contoh dijalankan
sumber