Il tuo compito, se scegli di accettarlo, è scrivere un programma / funzione che accetta un numero intero N come input. Il programma / funzione dovrebbe generare / restituire un elenco dei primi N numeri primi. Ma ecco il trucco: non ti è permesso usare i caratteri primi nel tuo codice. Un carattere primo è un carattere il cui punto di codice Unicode è un numero primo. Nell'intervallo ASCII stampabile, questi sono:
%)+/5;=CGIOSYaegkmq
Ma la regola si applica anche ai caratteri non ASCII se il codice li utilizza.
- Un input valido è un numero intero N dove 0 <N <= T , in cui è possibile scegliere T , ma deve essere maggiore o uguale a 10000. T non deve essere finito.
- Per input non validi (non numeri interi, numeri interi non compresi nell'intervallo), generare un'eccezione o generare / restituire nulla / null.
- Un numero intero con spazi bianchi iniziali / finali come input è considerato non valido.
- Un numero intero con un
+
carattere come segno come input è considerato non valido. - Un numero intero con zeri iniziali come input è considerato valido.
- Se la tua lingua ti consente di passare un intero già analizzato come input, le regole di analisi sopra (tranne quella di intervallo) non si applicano, perché int è già analizzato.
- L'input è sempre base-10.
- Non è consentito l'uso di generatori primi e tester di primalità incorporati (questo include le funzioni di fattorizzazione primaria).
- La restrizione di origine è imposta ai caratteri Unicode, ma il conteggio dei byte per il punteggio può essere in un'altra codifica, se lo si desidera.
- L'output può contenere una nuova riga finale, ma ciò non è necessario.
- Se si genera / restituisce l'elenco di numeri primi come stringa, allora ogni numero primo deve essere delimitato da uno o più caratteri non numerici. Puoi scegliere quale delimitatore utilizzare.
- Questa è una sfida di code-golf , vince il codice più corto in byte.
Stack Snippet per verificare il tuo codice
Puoi utilizzare il frammento di stack seguente per verificare che il codice non contenga caratteri primi:
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>
+
comando, sembra deludente essere obbligato a buttarli via manualmente.
;
sembra essere bandito ...