/* Configuration */
var QUESTION_ID = 107050; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 47650; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "http://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "http://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="language-list">
<h2>Shortest Solution by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
all the numbers from 1....n
. Je ne sais pas comment le reformuler de manière simple.Réponses:
Gelée ,
1413 octetsEssayez-le en ligne!
Comment ça marche
la source
d`
truc est autre chose ...Python 2 ,
106102100 octetsEssayez-le en ligne!
Contexte
Pour identifier les nombres premiers, nous utilisons un corollaire du théorème de Wilson :
Comment ça marche
Nous commençons par initialiser k et m comme 1 et p comme l'ensemble {0} . Notez que m = 1 = 0! ² = (k - 1)! ² . Immédiatement après, le code suivant est exécuté n fois, où n est l'entier lu à partir de l'entrée standard.
Par corollaire, m% k sera 1 si k est premier et 0 sinon. Ainsi,
{m%k*k,0}
retournera l'ensemble {k, 0} si k est premier et l'ensemble {0} sinon.Si (et seulement si) k est premier, puisque p ne peut pas contenir k à ce stade, la différence symétrique en place
p^={m%k*k,0}
ajoutera k à l'ensemble p . De plus, p contiendra 0 après la mise à jour si et seulement s'il ne contient pas 0 avant, donc 0 ∊ p si et seulement si k est pair.Sur la même ligne, nous définissons une fonction c via
c=bin(k).count
, qui comptera les occurrences de son argument dans la représentation binaire de k .La deuxième ligne produit la sortie réelle.
{k,c('1'),c('0')-1}
renvoie l'ensemble composé de k lui-même, le nombre de bits définis dans k et le nombre de bits non définis dans k . Puisque la sortie debin(k)
commence par 0b , nous devons décrémenterc('0')
pour tenir compte du 0 de tête .Si tous sont premiers, ils appartiendront tous à p , qui contient maintenant tous les nombres premiers jusqu'à k (et potentiellement 0 ). Si k est un nombre de Mersenne (c'est-à-dire s'il n'a que des bits définis),
c('0')-1
donnera 0 . Étant donné que le nombre de Mersenne sont impairs, p va pas contenir 0 , donc la condition échouera.Après avoir (potentiellement) imprimé k , on multiplie m par k² . Puisque m = (k-1)! ² avant la mise à jour, m = k! ² après celle-ci. Après avoir incrémenté k , la relation m = (k-1)! ² se vérifie à nouveau et nous sommes prêts pour la prochaine itération.
la source
Mathematica,
806854 octetsExplication
la source
JavaScript (ES6),
12311811511110496 octets4 octets enregistrés grâce à @Arnauld
Une combinaison de trois fonctions récursives typiques. Alerte la séquence dans l'ordre inverse et se termine sur une erreur "trop de récursivité".
Extrait de test
(modifié pour sortir sur la page)
Afficher l'extrait de code
La fonction principale peut renvoyer un tableau de 104 octets:
Il peut également être non récursif au prix d'un autre octet:
Voici celle avec laquelle j'ai commencé: (6 octets enregistrés grâce à @Arnauld)
J'ai essayé de jouer au golf plus loin et j'ai réussi à le faire en 104 octets, puis j'ai réalisé que j'avais déjà trouvé cette solution (c'est au bas de la réponse). Tu ne détestes pas quand ça arrive? : P
Une tentative non récursive de la fonction principale (encore une fois, même nombre d'octets):
Celui-ci prend la route facile de compter combien de 0 et de 1 sont dans la représentation binaire:
Même chose avec une compréhension de tableau:
Celui-ci prend un chemin un peu plus difficile pour faire la même chose:
Et celui-ci emprunte une autre voie connexe aussi courte que l'original:
Encore une fois, vous pouvez jouer au golf 8 octets en le faisant alerter la séquence dans l'ordre inverse:
la source
a
. Il suffit de l'initialiser lors de l'appel initial àG
. (Cela devrait économiser 4 octets.)Gelée ,
1716 octetsEssayez-le en ligne!
Comment?
la source
ẠBÇЀfĠ...
LƵ;P
bit me confond toujours.05AB1E , 14 octets
Essayez-le en ligne!
Explication
la source
.¡
, ce défi semblait bon pour lui, mais il est plus long:FNb{.¡€gpONp+3QiN}})
05AB1E ,
1715 octetsUtilise l' encodage CP-1252 . Essayez-le en ligne!
la source
LDpÏvybSD_)OpP—
pour 15 octets devrait fonctionner.MATL ,
1615 octetsEssayez-le en ligne!
la source
Perl, 101 octets
99 octets de code +
-nl
drapeaux.Pour l'exécuter:
Quelques brèves explications
$r
contiennent le regex classique (q/^1?$|^(11+)\1+$/
).Pour tous les nombres entre 2 et l'entrée,
(1x$@)!~$r
vérifie si le nombre est premier,y/01/1/dr!~$r
vérifie si le nombre de0
dans la représentation binaire est premier,s/0//gr!~$r
vérifie si le nombre1
dans la représentation binaire est premier.(si les 3 conditions sont remplies, l'
print$@
imprime).la source
Python,
129125123 octetsSi seulement zéro était premier ...
Essayez-le en ligne
La fonction
p
est la fonction de vérification principale, qui a>0
à la fin de sorte qu'elle fonctionne également pour zéro, qui sinon reviendrait-1
. La lambda anonyme est la lambda qui vérifie toutes les conditions requises.Voici une méthode légèrement différente utilisant une compréhension d'ensemble. Le résultat sera un ensemble. ( 124 octets ):
la source
Perl 6 , 65 octets
Essayez-le
Étendu:
la source
Octave, 73 octets
Essayez-le en ligne!
la source
CJam ,
2627 octetsAlgorithme simple, jouera plus loin.
EDIT: oublié n était inclusif.
Essayez-le en ligne!
Pour le plaisir, c'est très similaire et aussi 27 octets:
Explication
la source
Gelée , 14 octets
Essayez-le en ligne!
Malheureusement, je ne pouvais que lier avec @Dennis, mais l'algorithme semble être quelque peu différent, donc je le poste quand même.
Explication
Fonction d'assistance (supprime les éléments de liste qui n'ont pas un nombre premier d'occurrences d'un bit donné):
Programme principal:
la source
Haxe,
169171 octetsRien de fou. Essentiellement un tamis modifié d'Eratosthène qui évalue la primalité du compte 0/1 dans la même itération que de barrer des non-premiers supérieurs. Avec des espaces:
Mais aujourd'hui, j'ai appris que je pouvais mettre
continue
un opérateur ternaire et Haxe ne me dérange même pas.Edit: +2 car
n
est une borne supérieure inclusive!la source
n
c'est inclusif.Bash utilitaires GNU +,
129126123114111109 octetsEssayez-le en ligne!
A remarqué le commentaire selon lequel la sortie ne doit pas être dans l'ordre croissant - rasé de 3 octets en décomptant au lieu de décompter.
Grep remplacé par wc pour économiser 3 octets supplémentaires.
Suppression d'une variable (9 octets de plus hors tension).
Modification de la façon dont le facteur est utilisé - 3 octets supplémentaires.
Faites-en golfier avec seq (2 octets).
la source
Python,
172170168159 159154133130 octetsUtilisation: Appelez la fonction lambda anonyme La
méthode
p
vérifie si un nombre est premierEnregistré 2 + 2 + 9 = 13 octets grâce à Gurupad Mamadapur
Enregistré 5 octets grâce à mbomb007
la source
v
-def v(n):a=bin(n)[2:];return p(n)and(p(a.count('1'))and p(a.count('0')))
v=lambda a:p(a)and all(p(bin(a)[2:].count(x))for x in['1','0'])
for x in'01'
.Pyke, 21 octets
Essayez-le ici!
la source
Groovy, 120 octets
Il s'agit d'une fermeture sans nom.
Essayez-le ici!
la source
Pyth , 18 octets
Essayez-le en ligne ici .
la source
U
àS
eS
Python 3 , 97 octets
This is the same algorithm as in my Python 2 answer, but the implementation is quite different. The function prints to STDOUT and terminates with an error.
Try it online!
la source
JavaScript (ES6), 110 bytes
Show code snippet
la source
MATLAB, 50 bytes
la source
Haxe,
158147 bytesOutputs to STDOUT and terminates on a "too much recursion" error; call with e.g.
f(1000);
. You can use awhile
loop with no error for 156 bytes:Using a range turned out three bytes longer:
Test it online!
la source
Rust, 147 bytes
playground link
The
count_ones
,count_zeros
, andleading_zeros
methods came in handy.Formatted version
la source
Perl 6, 50 bytes
Variation of b2gills' answer, using the
&
junction operator to great effect.Try it online!
How it works
la source