La tâche est simple: votre programme lit un entier en entrée et affiche s'il s'agit d'un nombre premier ou non. Vous pouvez imprimer "oui / non", "vrai / faux" ou tout ce qui identifie sans ambiguïté le résultat.
Le défi est que le code doit fonctionner avec ses lignes et colonnes transposées.
Pour exclure la solution évidente (la solution la plus courte "simple" répétée verticalement caractère par caractère avec l'utilisation de commentaires), la métrique est un peu différente du code-golf habituel:
Étant donné que le formatage est très important dans ce défi , la taille du code est mesurée dans la zone du plus petit rectangle dans lequel le code tient. En d'autres termes, les espaces comptent et les lignes doivent être remplies pour être de longueur égale (vous ne le faites pas devez le faire lorsque vous postez la solution, par souci de simplicité). Par exemple
int main()
{
return 0;
}
aurait une taille de 4 * 13 = 52, (et évidemment il ne correspond à aucun des deux critères: détection primaire et transposable.)
La plus petite taille gagne.
Vous pouvez utiliser n'importe quel langage et n'importe quelle fonction de bibliothèque, sauf si le seul but de cette fonction est de rechercher, générer ou détecter des nombres premiers.
Éditer:
Alors que le gagnant serait probablement la solution Golfscript, je vais attribuer une prime de 50 points pour la meilleure solution C ou C ++!
Réponses:
GolfScript, 13 × 1
GolfScript frappe à nouveau!
Répète l'entrée si elle est première, sinon imprime l'entrée concaténée avec son plus petit diviseur approprié. Oui, je sais que cela étire la définition de «tout ce qui identifie sans ambiguïté le résultat», mais faire quelque chose de plus sophistiqué coûterait quelques caractères supplémentaires. Si vous voulez une sortie plus agréable, ajouter les trois caractères
;]!
au code donne1
des nombres premiers et0
des nombres composites.L'algorithme est vraiment inefficace, juste une division d'essai par force brute de 2 à n −1. La plupart des opérateurs GolfScript ne sont que des caractères uniques, donc ce code fonctionne tout aussi bien transposé. Malheureusement, l'opérateur d'affectation
:
n'autorise pas les espaces entre lui et sa cible, j'ai donc dû le faire entièrement sans variables.la source
!
? Ou aviez-vous quelque chose de plus sophistiqué en tête?)
avant le,
pour qu'il trouve toujours un diviseur et=
à la fin.:
suivi de la nouvelle ligne, assigne le caractère de nouvelle ligne - ce n'est donc pas que les espaces blancs ne sont pas autorisés, c'est juste que les blancs sont ce qui est assigné:
n'autorise pas d'espaces, ni rien d'autre , entre lui-même et sa cible: tout ce qui le suit immédiatement, que ce soit des espaces ou tout autre jeton (oui, des nombres pairs, des chaînes ou des blocs de code), est ce qui est attribué. Cependant, les espaces sont ce que la documentation officielle met en garde spécifiquement et pour une bonne raison - car dans la plupart des autres endroits, l'ajout d'espaces entre les jetons dans GolfScript ne fait rien (normalement, à moins qu'il ne soit attribué à ...).C,
2 * 702 * 60Imprime
y
pour les nombres premiers, rien d'autre.EDIT : code modifié pour enregistrer 10 caractères. Doit être exécuté sans paramètres (donc
m=1
).La méthode de gestion de la transposition est assez générique et peut être appliquée à n'importe quel programme.
Il est basé sur la conversion de ceci:
Pour ça:
Et les deux signifient simplement
abcd
.la source
C - 13x13
Lit l'entrée de stdin et imprime un
1
pour premier et un0
pour pas premier.edit: compile avec gcc et clang maintenant, les autres compilateurs n'ont pas été testés
la source
C, 12 x 12 caractères
Une solution à deux dimensions, contrairement à mon autre réponse , basée sur le même code (et comme ça, imprime
y
pour le premier, rien pour le composite).La structure est similaire à la réponse de Quasimodo , mais mon code est plus court, et je pense que mon utilisation des comemnts est un peu plus efficace, donc je peux tenir 12x12.
la source
Perl, 14 x 14
Je pense que je comprends cela. Spécifiez le nombre comme argument de ligne de commande, sorties
0
ou1
. Probablement plus de marge d'amélioration.la source
Q
Commentaires abusifs pour une solution symétrique et de caractère inefficace.
Prend l'entrée de STDIN, retourne un booléen.
la source
sqrt
dedans. Lorsque vous recherchez des nombres premiers dans le code-golf, il est généralement avantageux de diviser (inutilement) jusqu'à n plutôt que de vous arrêter à sqrt n.Gelée , 2x2 carré
Essayez-le en ligne!
Je pense que j'ai la partie de transposition correcte, et si oui, la version transposée de ceci est
Essayez-le en ligne!
(qui est le même code)
la source
05AB1E ,
1x51x3 (53 octets )Ce n'est pas un gros programme; chaque ligne est un programme alternatif séparé pour aborder la vérification principale (sans utiliser la fonction intégrée principale).
-2 octets grâce à Grimy .
Les espaces entre les lignes sont sans opération dans 05AB1E, et comme je n'utilise que des commandes à 1 octet, cela fonctionne très bien après la transposition.
Sorties
1
/0
pour vérité / falsey respectivement.Essayez le premier en ligne ou vérifiez d'autres cas de test pour tous (avec eval intégré
.V
) .Transposé: essayez le premier en ligne .
Explication:
REMARQUE: Si seule une valeur truey / falsey est valide, et qu'elle ne doit pas nécessairement être distincte,
Òg
ouÕα
peut être utilisée comme 2 octets valides, car seule1
est truey dans 05AB1E, et tout le reste est falsey: Essayez les deux eux pour certains cas de test .Si les builds étaient autorisés, un seul
p
aurait suffi: essayez-le en ligne ou vérifiez d'autres cas de test .la source
ÑPQ
ouÒgΘ
ouÒQP
pour 3 octets. (Ñ
et lesÒ
deux ont des objectifs autres que «trouver, générer ou détecter des nombres premiers», ils ne sont donc pas inclus dans l'interdiction, d'après ma lecture).ÕαΘ
,fQO
,fs¢
,f`Q
Õα
, cependant! C'est plutôt sympa.Enchantements runiques , 7 × 1
Essayez-le en ligne!
Runic ne se soucie pas de vos faibles tentatives de réarrangement des sources! Conforme à l'exigence de toujours fonctionner après avoir transposé la source coûte +3 octets (+2 largeur de rectangle) pour le modificateur de réflexion et le point d'entrée.
Transposé ou transposé, mais en laissant le caractère de combinaison attaché à son parent .
la source
dzaima / APL, 8 × 9 = 72
Essayez l'original ou transposé !
la source
Python 3 , taille 28 x 28
Essayez-le en ligne!
la source
JavaScript (Node.js) ,
2625x5Essayez-le en ligne!
Transposé:
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 10x11
Essayez-le en ligne!
Correction de la fonction pour se conformer aux spécifications. Merci @ Adám pour l'avertissement.
Renvoie 0 pour la vérité, 1 pour la fausse .
Comment
La version transposée est exactement la même.
la source