Son iki çılgınlıktan başka iki karakter dilinden esinlenerek, ;#
giriş
Topluluk konsensüsüne göre , bu sitedeki kabul edilebilir cevaplar, en azından aşağıdakileri yapan programlama dillerini kullanmalıdır:
- Doğal bir sayının asal olup olmadığını belirleyebilir
- Birlikte iki doğal sayı ekleyebilir
- Bir listeyi / sayı dizisini ve tek bir sayıyı temsil edebilir
Bu meydan okuma amacıyla # 3'ü görmezden geleceğiz. Bu nedenle, bu sitede kullanılabilecek en basit dilin (# 3 dikkate alınmadan) tam olarak iki komutu olacaktır isPrime
ve add
. Yorumlanması ve bayt sayısı kolaylığı için, 's ata izin isPrime
için p
ve add
için +
. Böylece dilimiz var +p
. Zorluğunuz bazı +p
kodları yorumlamaktır .
davranış
+
add
talimat ekler, iki sayıyı alır ve sonucunu çıktıp
isPrime
talimat tek bir sayı alır ve çıkışı1
o asal sayı ise, ve0
eğer değilse
kurallar
- Bir karakter dizisi verildiğinde, bu dizeyi
+p
kod olarak yorumlayan bir program / işlev yazmalısınız . İyi biçimlendirilmiş girdi (yalnızca+
vep
karakterler) varsayabilirsiniz . - Giriş esnektir. Programı bir dize, karakter dizisi, tam sayı kod noktaları dizisi, vb. Olarak alabilirsiniz. Yorumlanan programın girişi de esnektir. Bir tamsayı dizisi alabilir ve program yürütülürken up girişlerini kullanabilirsiniz veya her komut (
+
vep
) ayrı ayrı giriş isteyebilir. Her talimat için yeterli girdi olacağını varsayabilirsiniz. Girdinin 0 ile 200 arasındaki sayılardan oluşması garanti edilir (ancak algoritmalarınız teorik olarak herhangi bir pozitif tamsayı girişi için çalışmalıdır). - Çıktı da esnektir. Sonuçları yazdırabilir, liste olarak döndürebilir, tüm sonuçları içeren bir dize döndürebilirsiniz, vb. Yazdırılır veya dize olarak döndürülürse, çıktı yeni bir satır gibi rakam olmayan, tutarlı bir ayırıcıyla ayrılmalıdır. sekme, boşluk veya
,
karakter. Sondaki bir ayırıcıya veya sondaki boşluklara sahip olabilirsiniz. Ayrıca,p
sen yerine, çalışan dille tanımlanan 'ın çıkış, herhangi truthy veya Falsey değeri olabilir1
ya0
. - Tercüman sonlanabilir veya bitmeyebilir (eğer tam bir programsa), ancak tüm talimatlar yorumlandıktan sonra yazdırmayı durdurmalıdır. (Ayırıcıyı sonsuza kadar veya boş karakter vb. Yazdırmaya devam edemez).
- Bu standart boşluklar varsayılan olarak yasaklanmıştır
- Bu kod golf , en az bayt ile cevap kazanır
Test Durumları
Program: +
Input: [56, 50]
Output: 106
----------------------------------
Program: p
Input: [12]
Output: 0
----------------------------------
Program: p
Input: [13]
Output: 1
----------------------------------
Program: ++
Input: [172, 120, 33, 58]
Output: 292 91
----------------------------------
Program: p
Input: [29]
Output: 1
----------------------------------
Program: pp
Input: [176, 12]
Output: 0 0
----------------------------------
Program: ++++p
Input: [32, 16, 69, 197, 73, 171, 21, 178, 72]
Output: 48 266 244 199 0
----------------------------------
Program: pp+++p+pp+
Input: [151, 27, 119, 189, 198, 107, 174, 15, 166, 106, 134, 108, 169, 55, 42]
Output: 1 0 308 305 189 0 240 0 0 97
----------------------------------
Program: p+p+++++++pp+p
Input: [143, 67, 30, 149, 178, 52, 112, 122, 55, 122, 142, 199, 20, 175, 138, 80, 116, 180, 50, 116, 15, 92, 74]
Output: 0 97 1 230 234 177 341 195 218 296 0 0 107 0
----------------------------------
Program: ++p++p+pp+++++p+p+pp++
Input: [120, 177, 23, 116, 163, 52, 65, 98, 177, 16, 96, 131, 160, 48, 153, 0, 139, 33, 62, 49, 129, 86, 99, 135, 187, 80, 137, 130, 113, 136, 0, 1, 186, 100, 38, 153]
Output: 297 139 1 117 275 0 227 0 0 153 172 111 215 234 0 217 0 249 0 0 286 191
----------------------------------
Program: ++p+++++p+p+++++++
Input: [181, 169, 6, 84, 68, 171, 129, 107, 106, 114, 197, 58, 11, 88, 156, 169, 43, 77, 49, 43, 102, 78, 93, 51, 91, 37, 64, 93, 82, 126, 181, 81, 44]
Output: 350 90 0 300 213 311 69 244 0 120 0 145 171 142 101 175 307 125
----------------------------------
Program: ++p+
Input: [131, 127, 115, 40, 113, 196, 83]
Output: 258 155 1 279
----------------------------------
Program: +ppp++p+ppp+p++++++++p+p+++pp+ppp++
Input: [6, 9, 187, 168, 96, 167, 178, 139, 86, 148, 99, 103, 166, 18, 119, 15, 132, 77, 16, 88, 139, 34, 58, 90, 43, 69, 68, 152, 59, 106, 134, 49, 155, 100, 52, 55, 27, 188, 41, 77, 23, 49, 171, 23, 193, 84, 111, 165, 80, 18, 63, 23, 116, 112, 119]
Output: 15 0 0 0 345 225 0 202 0 0 0 147 0 104 173 148 112 220 165 183 255 0 82 0 118 72 194 1 0 276 0 0 0 139 231
----------------------------------
Program: ++++++++p++++++++++++
Input: [156, 5, 34, 25, 117, 98, 139, 131, 88, 82, 191, 13, 1, 170, 51, 116, 144, 85, 92, 170, 25, 94, 149, 131, 19, 161, 115, 160, 8, 6, 195, 101, 11, 185, 87, 50, 33, 140, 188, 135, 164]
Output: 161 59 215 270 170 204 171 167 0 177 195 243 150 276 168 201 112 272 83 328 299
----------------------------------
Çok, çok, çok uzun test senaryoları
Test senaryoları oluşturmak için kullanılan java kodu
Misal
Aşağıda yorumlanacak bir ungolfed java işlevi vardır +p
:
public static void interpret(String program, int[] input) {
int index = 0;
for (char inst : program.toCharArray()) {
switch (inst) {
case '+':
System.out.print((input[index++] + input[index++]) + " ");
break;
case 'p':
int n = input[index++];
System.out.print((isPrime(n) ? 1 : 0) + " ");
break;
}
}
}
public static boolean isPrime(long n) { //Taken from /programming//a/2385999/4484294
if (n < 2) return false;
if (n == 2 || n == 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
long sqrtN = (long) Math.sqrt(n) + 1;
for (long i = 6L; i <= sqrtN; i += 6) {
if (n % (i - 1) == 0 || n % (i + 1) == 0) return false;
}
return true;
}
Not: Arama sorgusunu kullanarak, prime AND add AND interpret is:question
bu sorunun kopyaları görünmüyor. Eğer varsa, üzgünüm.
isprime
julia'da.
p
s sonuçları ayırıcı olmadan birleştirilir, bu amaçlanıyor mu?