De nombreux utilisateurs de PPCG ont aidé à la création de ce défi, à la fois dans le chat et dans le bac à sable, en particulier Martin Ender , AdmBorkBork , Emigna et user202729
Notre communauté a jugé nécessaire de créer un ensemble de langues spécialement conçues pour le golf, des «langues de golf» comme nous les appelons. De tels langages ont évolué du GolfScript autrefois brillant et désormais maladroit aux langages concis élégants tels que Jelly et Husk . Comme nous pouvons le voir, ces langues sont de plus en plus courtes pour un ensemble de tâches. Donc, en tant qu'experts incontournables ici en ce qui concerne les langues de golf, nous devons concevoir ensemble un langage pour battre toutes les autres langues qui osent rivaliser. Présentation de Bugle!
Bugle: De l'acronyme BuGoL: Bu ilt Go lfing L anguage.
Comment ce défi fonctionnera
Dans le cas où vous n'avez pas compris ce à quoi je fais allusion dans l'introduction, ce défi est un défi de chaînage des réponses où nous contribuons chacun quelque chose à l'interprète d'une nouvelle langue de golf, améliorant ainsi sa capacité à participer au PPCG avec chaque réponse.
Je posterai la première réponse composée de la base de la spécification de langue / interprète, et toutes les autres réponses continueront à partir de là. Les nouvelles soumissions fourniront les éléments suivants:
- Un changement aux spécifications de la langue
- Un interprète à jour, répondant exactement à ce qui est prévu dans les changements
- Le score mis à jour de la langue (plus de détails dans un peu)
Vous pouvez modifier la spécification de trois manières:
- Vous pouvez ajouter une seule commande
- Vous pouvez ajouter deux nouvelles commandes
- Vous pouvez modifier le comportement d'une commande existante
Concernant le nouvel interpréteur, vous devez utiliser la dernière version, écrite en Python. Il n'est pas nécessaire de jouer au golf. Chaque commande précédemment ajoutée doit pouvoir être testée avec le dernier interpréteur, ainsi que la ou les commandes les plus récentes (celle que vous ajoutez). Vous ne devez pas non plus utiliser un langage offensant à tout moment lors de la mise à jour de l'interpréteur, comme dans les commentaires ou les chaînes de caractères, etc.
La ou les commandes ajoutées peuvent faire tout ce que vous souhaitez . Les seules exigences sont:
- Il ne produit pas de sortie offensante
- Ce n'est pas la même chose qu'une autre commande
- Cela n'empêche pas la réalisation d'un des exemples de défis
En dehors de ceux-ci, cela peut être aussi spécifique ou aussi général que vous le souhaitez. Il peut également s'agir de n'importe quel personnage souhaité. Si vous n'êtes pas sûr que votre ajout constitue une «nouvelle commande», n'hésitez pas à demander dans les commentaires.
Le score de la langue
Vous avez peut-être remarqué que vous devez inclure le score de la langue dans toutes les nouvelles soumissions. Son score est ce qui empêche ce défi d'aller indéfiniment, et est défini comme suit:
Le score actuel est la somme des décomptes d'octets nécessaires à la langue pour effectuer les 20 tâches ci-dessous.
Pour chacune des tâches, les règles d'E / S standard s'appliquent , tout comme les failles standard .
Les 20 tâches:
- "Bonjour le monde!" - Sortie de la chaîne
Hello, World!
- 1, 2, Fizz, 4, Buzz - Affiche chaque entier de 1 à 100 (inclus) sur une ligne distincte, les multiples de 3 étant remplacés par
Fizz
, les multiples de 5 étant remplacés parBuzz
et les multiples des deux parFizzBuzz
- Produisez le nombre 2014 sans aucun nombre dans votre code source - Sortez le nombre 2014 sans utiliser aucun des caractères
0123456789
du code source, sans accéder à des variables externes ou des graines aléatoires - Obfuscated Bonjour tout le monde - la chaîne de sortie
Hello, World!
, sans utiliser de caractères dans au moins deux des ensembles suivants:hlwd
,eor01
et27
(insensible à la casse) Chantez Joyeux anniversaire à votre langage de programmation préféré - Dans un langage de votre choix, sortez les éléments suivants:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Nous ne sommes pas étrangers au code du golf, vous connaissez les règles, et moi aussi - Générez les paroles complètes de "Never Gonna Give You Up"
- Afficher le signe - Étant donné un nombre, imprimer -1 s'il est négatif, 0 s'il est 0 ou 1 s'il est positif
- Conjecture de Collatz (OEIS A006577) - En partant d'un entier, divisez-le par 2 s'il est pair, ou multipliez-le par 3 et ajoutez 1 s'il est impair, et répétez le processus jusqu'à ce que vous atteigniez 1. La sortie doit être le nombre d'itérations qu'il vous amène à atteindre 1.
- Un tableau de défis # 1: tableaux alternatifs - Étant donné un tableau d'entiers, vérifiez si tous les éléments indexés pairs sont égaux et tous les éléments indexés impairs sont égaux, et affichez une valeur vraie ou fausse en conséquence
- Suis-je un tableau insignifiant?- Étant donné un tableau d'entiers, vérifiez si les différences absolues entre les éléments consécutifs sont toutes inférieures ou égales à 1, et émettez une valeur véridique ou fausse en conséquence
- Est-ce que ce nombre est un nombre premier?- Étant donné un entier positif, écrivez un programme complet pour vérifier s'il est premier et affichez une valeur vraie ou fausse en conséquence
- Je suis un palindrome. Es-tu?- Étant donné une chaîne, vérifiez si elle est palindrome, alors que votre programme / fonction est également palindrome, et affichez deux valeurs distinctes et cohérentes en conséquence
- Additionnez les chiffres sur la norme en - Prenez une série de nombres dans STDIN et sortez leur somme.
- Trouver le factoriel - Étant donné un entier
n
, affichez le produit de tous les entiers entre1
etn
inclus. - Code le plus court pour produire une sortie infinie - Sans aucune entrée, produire une sortie infinie, qui, en théorie, ne cessera jamais de sortir.
- Cuire une tranche de Pi - Sortez ce texte exact:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Trouver le plus petit nombre qui ne divise pas N - Étant donné un entier positif N, sortir le plus petit entier positif qui ne divise pas N.
- Est-ce pair ou impair?- Étant donné un entier N, sortir sa parité en tant que valeurs véridiques / fausses.
- Sortie avec la même longueur que le code - Écrivez le code le plus court dont la sortie a la même longueur que le code, où la sortie n'est pas la même que le code.
- Jouez au golf pour le bien! - Écrivez le quine le plus court dans votre langue.
Pour être valide, une nouvelle soumission doit contenir des soumissions pour au moins 2 des problèmes, par au moins 1 octet pour chacune. Vous pouvez augmenter la longueur des autres soumissions, mais le score total doit diminuer d' au moins 2 par réponse. Veuillez également envisager d'inclure un lien vers les programmes mis à jour. Les solutions mises à jour ne doivent pas fonctionner lorsqu'elles sont exécutées avec une version précédente de l'interpréteur.
Comment obtenir des cookies
J'ai une liste de 5 défis, qui ne sont pas obligatoires pour tenter, et n'ont aucune incidence sur votre score, mais sont simplement des défis supplémentaires pour tester si Bugle est suffisamment capable. N'hésitez pas à inclure une solution à n'importe quel nombre d'entre eux dans votre réponse:
- Créer un auto-interprète
- Créer un quine capable de charge utile
- Covfefify une chaîne
- Hyperprogrammation: N + N, N × N, N ^ N tout en un
- "NŒUD" ou "NON"?
Les descriptions ne sont pas incluses car elles ne sont pas requises pour que tout le monde puisse participer au défi.
Comment gagner
Une fois que le score minimum ( nous pensons être 16, bien que toutes les tentatives de golf vers le bas soient les bienvenues) a été atteint, la chaîne est évidemment terminée car les solutions ne peuvent pas obtenir un meilleur score. Une fois 16 ans atteints, le défi reste vivant pendant 1 mois après, pour donner à chacun une chance de jouer au golf les solutions. Après ce mois, le défi est terminé.
Une fois le défi terminé, je migrerai l'interpréteur sur un référentiel GitHub, et passerai par les machinations habituelles de la libération d'un langage stable. Vous pouvez également commencer à publier des solutions aux défis sur PPCG en ce moment, en utilisant ledit langage, mais veuillez ne pas inonder la première page de réponses. Au lieu de cela, répartissez-les sur une période de temps.
Mise en forme
Afin de faciliter la recherche d'informations dans votre réponse, veuillez les formater comme suit:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Où [N]
est votre numéro de réponse (1 pour le premier, 2 pour le second, etc.)
Règles
- Vous devez attendre 3 heures entre la publication des réponses
- Vous ne pouvez pas poster deux fois de suite, sauf si aucune réponse n'a été publiée pendant 10 jours (exactement 240 heures)
- Vous ne pouvez pas supprimer les commandes précédentes.
- Votre interprète n'a pas besoin d'être joué au golf, et son nombre d'octets est complètement hors de propos ici.
- Si quelqu'un suggère un golf aux programmes alors que votre réponse est la plus récente, vous devez modifier les golfs et mettre à jour votre score.
- Vous pouvez également le faire lorsque votre réponse est au milieu de la chaîne, tant que votre score ne devient pas inférieur à toutes les réponses ultérieures.
- Veuillez vous abstenir de répondre à tous les défis PPCG existants en utilisant cette langue, au moins jusqu'à ce que le défi soit terminé.
- L'interpréteur est écrit en Python 3 et devrait continuer de cette façon tout au long de la chaîne. Changer la langue est interdit.
- Encore une fois, pour être valide, une nouvelle soumission doit contenir des soumissions pour au moins 2 des problèmes, par au moins 1 octet pour chacune.
Commençons!
Hello, World!
, alors c'est 19 octets. Mais si le comportement du programme vide change, en fonction de l'entrée, il peut être réduit
for
boucles) sont autorisées et encouragées à être ajoutées