Tulis program atau fungsi dalam bahasa apa pun yang memberi tahu jika inputnya adalah bilangan prima.
- Input adalah string yang mewakili bilangan alami di basis-10.
- Outputnya adalah salah satu dari dua string "Perdana" atau "Tidak !!" yang mengidentifikasi input dengan benar.
- Operator aritmatika, operator bit-bijaksana, variabel numerik dan konstanta, "matematika" pada umumnya, dll ... tidak diizinkan di mana pun dalam program Anda. Anda harus menggunakan operasi string untuk melakukan semua "perhitungan" yang diperlukan.
- Anda dapat membandingkan panjang string (yang merupakan angka) - tetapi -10 pada skor Anda jika tidak.
- Program Anda harus bekerja pada input panjang apa pun (diberikan cukup memori dan waktu).
- Hitungan byte terendah (UTF-8) menang.
code-challenge
string
primes
Wally
sumber
sumber
Jawaban:
Ruby, 64 - 10 = 54
Ini beralih dari string '1' (ditambah baris baru) ke string input, menggunakan metode iterasi string bawaan Ruby yang terlihat sangat buruk seperti menambahkan 1, tetapi yang secara teknis tidak membuat variabel numerik tingkat tinggi di titik mana pun . Ia menggunakan fakta bahwa akan ada n iterasi untuk input n untuk membuat string n-length, kemudian menggunakan ekspresi reguler untuk menentukan apakah string itu dapat dikelompokkan ke dalam substring yang identik.
sumber
Ruby: 52 - 10 = 42
Menggunakan variasi dari regex prime-matching yang terkenal itu.
Untuk lebih jelasnya:
?_*gets.to_i
adalah operasi string yang menambahkan"_"
ke dirinya sendiri n kali, di mana n adalah nomor input. Seperti yang saya lihat tidak ada panjang string yang dibandingkan, sehingga harus memenuhi kriteria bonus 10 karakter.sumber
Arithmetic operators, bit-wise operators, numeric variables and constants
, dan Anda tidak dapat benar-benar mengklasifikasikan memanggil metode sebagai"math-stuff" in general
..?Perl 52-10 = 42
Penerapan
Demo
sumber
pop
alih-alih$ARGV[0]
, simpan 4 karakter, hapus indeks array numerikECMAScript 6, 159 - 10 = 149
Kedengarannya seperti tugas untuk regex. I / O dengan
prompt
/alert
seperti biasa.Loop sementara menurunkan angka desimal dengan satu setiap iterasi murni dengan regex. Regex akhir cocok dengan string yang terdiri dari bilangan komposit x, dengan terlebih dahulu mencocokkan satu faktor, lalu yang lain dengan mengulangi faktor pertama untuk sisa string.
sumber
Javascript 266
Menciptakan fungsi yang disebut N yang akan mencetak hasil yang diinginkan. Versi yang tidak ditambang terlihat seperti ini. Saya melakukan minify tangan untuk membersihkan beberapa variabel dan kemudian menjalankannya melalui uglify dan kemudian tangan minify itu lagi.
Mengujinya menggunakan cuplikan ini:
sumber
Bash 66 - 10 = 56
Penerapan
Demo
sumber
Python 3, 109-10 = 89
Tidak membandingkan panjang string, tetapi inklusi string. Silang diposting dari duplikat Menentukan apakah angka prima tanpa menggunakan aritmatika
sumber