Su tarea, si elige aceptarla, es escribir un programa / función que acepte un entero N como entrada. El programa / función debería generar / devolver una lista de los primeros N números primos. Pero aquí está el truco: no puedes usar caracteres primos en tu código. Un carácter primo es un carácter cuyo punto de código Unicode es un número primo. En el rango ASCII imprimible, estos son:
%)+/5;=CGIOSYaegkmq
Pero la regla también se aplica a caracteres no ASCII si su código los usa.
- Una entrada válida es un número entero N donde 0 <N <= T , donde puede elegir T , pero tiene que ser mayor o igual que 10000. T no tiene que ser finito.
- Para entradas no válidas (no enteros, enteros fuera de rango), arroje una excepción o envíe / devuelva nada / nulo.
- Un número entero con espacios en blanco iniciales / finales como entrada se considera inválido.
- Un entero con un
+
carácter de signo como entrada se considera inválido. - Un entero con ceros a la izquierda como entrada se considera válido.
- Si su idioma le permite pasar un entero ya analizado como entrada, las reglas de análisis anteriores (excepto el rango uno) no se aplican, porque el int ya está analizado.
- La entrada siempre es base-10.
- No se permite el uso de generadores primarios integrados y probadores de primalidades (esto incluye funciones de factorización prima).
- La restricción de origen se impone a los caracteres Unicode, pero el conteo de bytes para la puntuación puede estar en otra codificación si lo desea.
- La salida puede contener una nueva línea final, pero esto no es obligatorio.
- Si genera / devuelve la lista de números primos como una cadena, entonces cada número primo debe estar delimitado por uno o varios caracteres que no sean dígitos. Puede elegir qué delimitador usar.
- Este es un desafío de código de golf , gana el código más corto en bytes.
Fragmento de pila para verificar tu código
Puede usar el siguiente fragmento de pila para verificar que su código no contenga caracteres principales:
var primes=[],max=10000;for(var i=2;i<=max;i++){primes.push(i);}for(var N=2;N<Math.sqrt(max);N++){if(primes.indexOf(N)===-1){continue;}primes=primes.filter(function (x){return x===N||x%N!==0;});}function setText(elem,text){var z=('innerText' in elem)? 'innerText' : 'textContent';elem[z]=text;}function verify(inputCode,resultSpan){var invalidChars=[];var success=true;for(var i=0;i<inputCode.length;i++){var cc = inputCode.charCodeAt(i);if (cc>max){setText(resultSpan,"Uh oh! The char code was bigger than the max. prime number calculated by the snippet.");success = false;break;}if (primes.indexOf(cc)!==-1){invalidChars.push(inputCode[i]);}}if (invalidChars.length===0&&success){setText(resultSpan, "Valid code!");}else if(success) { var uniqueInvalidChars = invalidChars.filter(function (x, i, self){return self.indexOf(x)===i;});setText(resultSpan, "Invalid code! Invalid chars: " + uniqueInvalidChars.join("")); }}document.getElementById("verifyBtn").onclick=function(e){e=e||window.event;e.preventDefault();var code=document.getElementById("codeTxt").value;verify(code,document.getElementById("result"));};
Enter your code snippet here:<br /><textarea id="codeTxt" rows="5" cols="70"></textarea><br /><button id="verifyBtn">Verify</button><br /><span id="result"></span>
+
, parece decepcionante que se requiera desecharlos manualmente.
;
esté prohibido ...