Tugasnya sederhana: program Anda membaca bilangan bulat sebagai input, dan mencetak apakah bilangan prima atau bukan. Anda dapat mencetak "ya / tidak", "benar / salah" atau apa pun yang dengan jelas mengidentifikasikan hasilnya.
Tantangannya adalah, kode harus bekerja dengan baris dan kolomnya ditransformasikan.
Untuk mengecualikan solusi yang jelas (solusi "sederhana" terpendek yang diulang secara vertikal char-by-char dengan menggunakan komentar), metrik ini sedikit berbeda dari kode-golf yang biasa:
Karena pemformatan sangat penting dalam tantangan ini , ukuran kode diukur di area persegi panjang terkecil yang cocok dengan kode. Dengan kata lain, spasi putih memang dihitung, dan garis harus diisi dengan panjang yang sama (Anda tidak perlu harus benar-benar melakukannya ketika Anda memposting solusi, demi kesederhanaan). Sebagai contoh
int main()
{
return 0;
}
akan memiliki ukuran 4 * 13 = 52, (dan jelas itu tidak cocok dengan salah satu dari dua kriteria: deteksi utama dan transposable.)
Kemenangan ukuran terkecil.
Anda dapat menggunakan bahasa apa pun, dan fungsi perpustakaan apa pun kecuali jika satu-satunya tujuan fungsi itu adalah untuk menemukan, menghasilkan, atau mendeteksi bilangan prima.
Edit:
Sementara pemenang mungkin akan menjadi solusi Golfscript, saya akan memberikan hadiah 50 poin untuk solusi C atau C ++ terbaik!
Jawaban:
GolfScript, 13 × 1
GolfScript menyerang lagi!
Ulangi input jika prima, jika tidak, cetak input bersambung dengan pembagi terkecil yang tepat. Ya, saya tahu itu memperluas definisi "apa pun yang jelas-jelas mengidentifikasi hasil", tetapi melakukan sesuatu yang lebih menarik akan membutuhkan beberapa karakter tambahan. Jika Anda ingin hasil yang lebih bagus, tambahkan tiga karakter
;]!
ke kode yang menghasilkan1
bilangan prima dan bilangan0
komposit.Algoritma ini benar-benar tidak efisien, hanya pembagian percobaan brute force dari 2 ke n −1. Sebagian besar operator GolfScript hanya karakter tunggal, sehingga kode ini berfungsi dengan baik sebagaimana ditransformasikan. Mengganggu, meskipun, operator penugasan
:
tidak mengizinkan spasi putih antara dirinya dan targetnya, jadi saya harus melakukan ini sepenuhnya tanpa variabel.sumber
!
? Atau apakah Anda memiliki sesuatu yang lebih menarik di benak Anda?)
sebelum,
sehingga selalu menemukan pembagi dan=
pada akhirnya.:
diikuti oleh baris baru, ditugaskan ke karakter baris baru - jadi bukan bahwa spasi putih tidak diizinkan, hanya saja ruang kosong itulah yang ditugaskan:
tidak mengizinkan spasi putih, atau apa pun , antara dirinya dan targetnya: apa pun yang segera mengikutinya, apakah spasi putih atau token lainnya (ya, genap angka, string, atau blok kode), adalah yang ditugaskan untuknya. Namun, spasi putih adalah apa yang secara khusus diperingatkan oleh dokumentasi resmi, dan untuk alasan yang baik - karena di sebagian besar tempat lain, menambahkan spasi putih antara token di GolfScript tidak melakukan apa-apa (biasanya, kecuali jika ditugaskan untuk ...).C,
2 * 702 * 60Mencetak
y
untuk bilangan prima, tidak sebaliknya.EDIT : Mengubah kode untuk menyimpan 10 karakter. Harus dijalankan tanpa parameter (jadi
m=1
).Metode untuk menangani transposisi cukup umum, dan dapat diterapkan pada program apa pun.
Ini didasarkan pada konversi ini:
Untuk ini:
Dan keduanya berarti sederhana
abcd
.sumber
C - 13x13
Membaca input dari stdin dan mencetak a
1
for prime dan a0
for prime.sunting: kompilasi dengan gcc dan dentang sekarang, kompiler lain tidak diuji
sumber
C, 12x12 karakter
Solusi dua dimensi, tidak seperti jawaban saya yang lain , berdasarkan kode yang sama (dan menyukainya, mencetak
y
untuk prime, tidak untuk komposit).Strukturnya mirip dengan jawaban Quasimodo , tetapi kode saya lebih pendek, dan saya pikir penggunaan comemnts saya sedikit lebih efisien, sehingga saya dapat memuat 12x12.
sumber
Perl, 14 x 14
Saya pikir saya sudah memahami ini. Tentukan angka sebagai argumen baris perintah, output
0
atau1
. Mungkin lebih banyak ruang untuk perbaikan.sumber
Q
Komentar yang disalahgunakan untuk solusi simetris, karakter yang tidak efisien.
Mengambil input dari STDIN, mengembalikan boolean.
sumber
sqrt
di sana. Ketika mencari bilangan prima dalam kode-golf, biasanya menguntungkan untuk (sia-sia) membagi semua jalan hingga n daripada berhenti di sqrt n.Jelly , 2x2 persegi
Cobalah online!
Saya pikir saya memiliki bagian transposisi yang benar, dan jika demikian, versi transposisi dari ini adalah
Cobalah online!
(yang merupakan kode yang sama)
sumber
05AB1E ,
1x51x3 (53 byte )Ini bukan satu program besar; setiap baris adalah program alternatif yang terpisah untuk menangani pemeriksaan prima (tanpa menggunakan prime builtin).
-2 byte terima kasih kepada Grimy .
Ruang putih di antara baris adalah no-ops di 05AB1E, dan karena saya hanya menggunakan perintah 1-byte, ini berfungsi dengan baik setelah transposing.
Keluaran
1
/0
untuk kebenaran / kepalsuan masing-masing.Coba yang pertama online atau verifikasi beberapa test case lainnya (dengan eval builtin
.V
) .Ditransposisikan: Coba yang pertama online .
Penjelasan:
CATATAN: Jika hanya nilai kebenaran / falsey yang valid, dan itu tidak perlu harus berbeda
Òg
atauÕα
dapat digunakan sebagai 2-byters yang valid, karena hanya1
benar di 05AB1E, dan yang lainnya falsey: Coba keduanya mereka untuk beberapa kasus uji .Jika bawaan diizinkan, satu saja
p
sudah mencukupi: Cobalah secara online atau verifikasi beberapa kasus uji lagi .sumber
ÑPQ
atauÒgΘ
atauÒQP
selama 3 byte. (Ñ
danÒ
keduanya memiliki tujuan selain "untuk menemukan, menghasilkan, atau mendeteksi bilangan prima", sehingga mereka tidak termasuk dalam larangan, menurut bacaan saya).ÕαΘ
,fQO
,fs¢
,f`Q
Õα
! Itu bagus sekali.Pesona Rise , 7 × 1
Cobalah online!
Runic tidak peduli dengan upaya Anda yang lemah dalam pengaturan ulang sumber! Sesuai dengan persyaratan masih berfungsi setelah sumber ditransformasikan biaya +3 byte (+2 persegi panjang lebar) untuk pengubah refleksi dan titik masuk.
Ditransposisikan atau ditransposisikan, tetapi membiarkan karakter kombinasi melekat pada induknya .
sumber
dzaima / APL, 8 × 9 = 72
Coba yang orisinal atau transpos !
sumber
Ukuran Python 3 , 28 x 28
Cobalah online!
sumber
JavaScript (Node.js) ,
2625x5Cobalah online!
Dipindahkan:
Cobalah online!
sumber
APL (Dyalog Unicode) , 10x11
Cobalah online!
Mengoreksi fungsi untuk memenuhi spesifikasi. Terima kasih @ Adám untuk informasi lebih lanjut.
Mengembalikan 0 untuk truey, 1 untuk falsy .
Bagaimana
Versi yang dialihkan adalah sama persis.
sumber