Sortie de quelques mots réservés

9

Pour un langage informatique, un mot réservé est un mot qui ne peut pas être utilisé comme identifiant, comme le nom d'une variable, d'une fonction ou d'une étiquette. Pour les autres langages informatiques, les mots clés peuvent être considérés comme l'ensemble des instructions de langue.

Défi

En utilisant la langue de votre choix, écrivez un code dans la langue choisie qui donne un nombre entre un et dix 1<=n<=10, sort tous les nmots réservés (mots-clés) de la langue choisie.

Détails

  • Si la langue choisie est sensible à la casse, les mots clés générés doivent l'être également.
  • Si la langue choisie n'est pas sensible à la casse, les mots clés générés peuvent l'être dans tous les cas.
  • Si la langue choisie a moins de 10 mots-clés disant p, le code doit sortir tous les mots réservés pour tout nentre pet 10.
  • Si possible, spécifiez dans la réponse si vous considérez les opérateurs comme des mots clés ou non.

Exemples possibles pour Java (JDK10)

  • n=1 --> true
  • n=3 --> try new interface
  • n=4 --> continue this long break

Échantillons possibles pour> <>

  • n=1 --> >
  • n=3 --> > < ^
  • n=4 --> > < \ /

Échantillons possibles pour Brain-Flak

  • n=1 --> (
  • n=3 --> ( ) [ ]
  • n=9 --> ( ) [ ] { } < >

Règles

  • L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
  • Pas besoin de gérer des valeurs d'entrée non valides, les entrées valides sont: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
  • Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
  • Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
  • Les failles standard sont interdites.
  • Il s'agit de donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
mdahmoune
la source
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
Mego
2
continue this long breakJe souhaite que! Voilà pourquoi je suis sur SE!
Stan Strum
les entiers sont réservés mais je suppose que ce serait une faille.
snoram

Réponses:

7

APL (Dyalog Unicode) , 9 octets SBCS

Programme complet. Invite stdin pour n(fonctionne en fait pour la plage 0–29). Les mots clés APL sont des symboles à caractère unique, donc cela imprime les nsymboles sur la sortie standard.

⎕↑156↓⎕AV

Essayez-le en ligne!

⎕AV le vecteur atomique (c'est-à-dire le jeu de caractères)

156↓ déposer les 156 premiers éléments

⎕↑ demander net prendre autant d'éléments de ce qui précède

Adam
la source
5

Python 2 , 25 octets

lambda n:'=+*/%&^|<>'[:n]

Une fonction sans nom acceptant un entier dans [1,10] qui retourne une chaîne d'opérateurs binaires à un octet.

Essayez-le en ligne!

Les opérateurs:

=  Assign
+  Addition
*  Multiplication
/  Division
%  Modulo
&  Bitwise-AND
^  Bitwise-XOR
|  Bitwise-OR
<  Less Than?
>  Greater Than?

Si seuls les mots clés réels sont autorisés: 40 octets

from keyword import*
lambda n:kwlist[:n]

Une fonction sans nom acceptant un entier dans [1,10] qui retourne une liste de chaînes.

Essayez-le en ligne!

Le code devrait être assez simple - il définit une fonction prenant un argument n,, lambda n:...qui utilise qui renvoie le premier n( ...[:n]) des mots clés connus en utilisant la bibliothèque standard keywords.kwlist(avec la technique de golf standard de import*).

Jonathan Allan
la source
point très mineur mais =est sûrement "Assignment" tout comme =="Test for d'égalité"
Noodle9
Oups, bonne prise, merci @ Noodle9
Jonathan Allan
Bizarre vote négatif! Edit: Quelqu'un a décidé que toutes les réponses ici méritent un vote négatif. LOL
Jonathan Allan
Ce n'était certainement pas moi - j'ai aimé votre réponse et j'ai voté pour elle! :)
Noodle9
4

Java 10, 83 72 octets (mots clés)

n->"do   if   for  int  new  try  var  byte case char ".substring(0,n*5)

Essayez-le en ligne.

Ancienne réponse de 83 octets:

n->java.util.Arrays.copyOf("do if for int new try var byte case char".split(" "),n)

Essayez-le en ligne.

Explication:

n->                         // Method with integer parameter and String-array return-type
  java.util.Arrays.copyOf(  //  Create a copy of the given array:
    "do if for int new try var byte case char".split(" ") 
                            //   The keywords as String-array,
    ,n)                     //   up to and including the given `n`'th array-item

Liste des mots clés disponibles pour Java 8. Java 10 a le mot clévar en plus de ceux-ci.


Java 8+, 30 octets (opérateurs)

n->"+-/*&|^~<>".substring(0,n)

Essayez-le en ligne.

Kevin Cruijssen
la source
3

Gelée , 3 octets

ØAḣ

Un lien monadique acceptant un entier et renvoyant une liste de caractères.

Essayez-le en ligne!

Les caractères résultants sont tous des atomes monadiques dans la page de codes de Jelly :

A   Absolute value.
B   Convert from integer to binary.
C   Complement; compute 1 − z.
D   Convert from integer to decimal.
E   Check if all elements of z are equal.
F   Flatten list.
G   Attempt to format z as a grid.
H   Halve; compute z ÷ 2.
I   Increments; compute the differences of consecutive elements of z.
J   Returns [1 … len(z)].

Comment?

ØAḣ - Link: integer n (in [1,10])
ØA  - yield uppercase alphabet = ['A','B','C',...,'Z']
  ḣ - head to index n
Jonathan Allan
la source
Oh - je vois que quelqu'un a décidé de voter contre toutes les réponses; comme c'est sportif!
Jonathan Allan
Pensez que cette réponse mérite aussi un vote positif! :)
Noodle9
3

Fusain , 16 octets

✂”yPBG¤T⎚M↶↷J”⁰N

Dommage qu'il n'y ait pas de variable prédéfinie pour sa propre page de code dans Charcoal.

Essayez-le en ligne.

Explication:

Obtenez une sous-chaîne de l'index 0 au numéro d'entrée:

Slice("...",0,InputNumber)
✂”y...”⁰N

La chaîne avec 10 mots clés:

”yPBG¤T⎚M↶↷J”
Kevin Cruijssen
la source
Je suppose que les lettres pleine largeur ont des codes de caractères consécutifs, vous pouvez donc imprimer le premier nde ceux-ci, ce que je peux faire en 8 octets.
Neil
@Neil Mais dix de ces caractères consécutifs sont-ils utilisés comme commandes / opérateurs? Le par exemple n'est pas utilisé du tout en ce moment, n'est-ce pas? (Sauf en combinaison avec KAou ⌕A.)
Kevin Cruijssen
En fait, c'est une commande et un opérateur, mais pas bon, car cela peut créer de la confusion entre Findet FindAll, mais vous vous retrouvez ensuite coincé à et , qui ne sont utilisés que comme modificateurs, puis ne sont pas utilisés du tout, ce qui vous limite. Des lettres grecques, alors?
Neil
Peu importe, ce sont des variables, pas des commandes, je suppose.
Neil
3

Perl 5 -lp , 24 octets

#!/usr/bin/perl -lp
$_=(grep!eval,a..zz)[$_]

Essayez-le en ligne!

Facile à étendre à de plus en plus des mots - clés, mais vous aurez besoin de faire boîtier spécial à partir de 4 lettres parce que vous rencontrez des problèmes avec dump, eval, exit, getcetc ..

Bien sûr, la sortie des opérateurs et des sceaux est ennuyeuse mais plus courte à 11 octets:

#!/usr/bin/perl -lp
$_=chr$_+35

Essayez-le en ligne!

(J'ai sauté #car il n'est pas clair comment je dois le classer dans le contexte de ce défi)

Ton Hospel
la source
3

JavaScript (Node.js) , 79 61 octets

n=>'true int var for in if new try of do'.split` `.slice(0,n)

Essayez-le en ligne!

Comment :

n =>         // the input (will be an integer) between 1 and 10 (both inclusive)
    '        // beginning our string 
        true int var for in if new try of do'. // space separated reserved words
    split` `.        // turn it into an array every time there is a space we add to array
    slice(0,n)      // return elements of array starting from 0 and upto n

Si l'utilisation d'opérateurs est autorisée (ce sera probablement parce qu'ils sont des mots réservés), alors:

JavaScript (Node.js) , 26 25 octets

n=>'|/^%+<&*-='.slice(-n)

Essayez-le en ligne!

8 octets enregistrés grâce à @Adam et 1 octet supplémentaire grâce à @ l4m2

Comment :

n =>     // input (integer from 0-9 inclusive)
    '|/^%+<&*-='.    // operators make a shorter string 
        slice(-n)   // outputs string chars from last upto n 
            // this works since all operators are single chars and not multi chars.
Muhammad Salman
la source
Oh ouais, Lol joue toujours au golf. Merci @ Adám. Je l'apprécie.
Muhammad Salman
3
Je ne pense pas que ce intsoit un «mot réservé» selon la définition du défi. Vous pouvez certainement nommer une variable inten JavaScript.
kamoroso94
1
Si je me souviens bien, intest réservé comme un futur mot-clé possible par la spécification ECMAScript.
BNilsou
Pourquoi substrau lieu de slice?
l4m2
3

Rubis , 22 octets

->n{'+-*/%&|^<>'[0,n]}

Essayez-le en ligne!

-2 octets grâce à @ benj2240


la source
D'accord. Va mettre à jour ma réponse.
String#[]a une surcharge à deux arguments que vous pouvez utiliser pour -2 octets:[0,n]
benj2240
pn'est pas un mot réservé, &devrait fonctionner
Asone Tuhid
@AsoneTuhid: p est également utilisé pour l'impression, mais vous avez raison, je peux probablement le remplacer. Merci
@ I'mnoone Oui mais c'est une méthode, vous pouvez la redéfinir et vous pouvez créer une variable nommée pqui sera accessible au lieu d'appeler la méthode sans variable ( p = 1; p p #=> 1)
Asone Tuhid
2

Pyth , 4 octets

>QPG

Essayez-le en ligne!

Malheureusement, la plupart des lettres sont des variables ( GHJKNQTYZbdkz).

p  <any>                  Print A, with no trailing newline. Return A.
q  <any> <any>            A == B
r  <str> 0                A.lower()
r  <str> 1                A.upper()
r  <str> 2                A.swapcase()
r  <str> 3                A.title()
r  <str> 4                A.capitalize()
r  <str> 5                string.capwords(A)
r  <str> 6                A.strip() - Remove whitespace on both sides of A.
r  <str> 7                Split A, eval each part.
r  <seq> 8                Run length encode A. Output format [[3, 'a'], [2, 'b'], [1, 'c'], [1, 'd']].
r  <str> 9                Run length decode A. Input format '3a2bcd' -> 'aaabbcd'
r  <seq> 9                Run length decode A. Input format [[3, 'a'], [2, 'b'], [1, 'c'], [1, 'd']].
r  <int> <int>            Range, half inclusive. range(A, B) in Python, or range(A, B, -1).
r  <str> <str>            String range. r(C(A), C(B)), then convert each int to string using C.
r  <int> <seq>            r(B, A)
s  <col(str)>             Concatenate. ''.join(A)
s  <col>                  reduce on +, base case []. (Pyth +)
s  <cmp>                  Real part. A.real in Python.
s  <num>                  Floor to int. int(A) in Python.
s  <str>                  Parse as int. "" parses to 0. int(A) in Python.
t  <num>                  A - 1.
t  <seq>                  Tail. A[1:] in Python.
u  <l:GH> <seq/num> <any> Reduce B from left to right, with function A(_, _) and C as starting value. G, H -> N, T ->. A takes current value, next element of B as inputs. Note that A can ignore either input.
u  <l:GH> <any> <none>    Apply A(_, _) until a result that has occurred before is found. Starting value B. A takes current value, iteration number as inputs.
v  <str>                  Eval. eval(A) without -s, ast.literal_eval(A) with -s (online). literal_eval only allows numeric, string, list, etc. literals, no variables or functions.
w                         Take input. Reads up to newline. input() in Python 3.
x  <int> <int>            Bitwise XOR. A ^ B in Python.
x  <lst> <any>            First occurrence. Return the index of the first element of A equal to B, or -1 if none exists.
x  <str> <str>            First occurrence. Return the index of the first substring of A equal to B, or -1 if none exists.
x  <non-lst> <lst>        All occurrences. Returns a list of the indexes of elements of B that equal A.
x  <str> <non-lst>        First occurence. Return the index of the first substring of A equal to str(B), or -1 if none exists.
y  <seq>                  Powerset. All subsets of A, ordered by length.
y  <num>                  A * 2.
Leaky Nun
la source
2

C # .NET, 76 62 octets (mots clés)

n=>"as  do  if  in  is  for int new out ref ".Substring(0,n*4)

Essayez-le en ligne.

Ancienne réponse de 76 octets:

using System.Linq;n=>"as do if in is for int new out ref".Split(' ').Take(n)

Essayez-le en ligne.

Explication:

using System.Linq;  // Required import for Take
n=>                 // Method with integer parameter and IEnumerable<string> return-type
  "as do if in is for int new out ref".Split(' ') 
                    //  The keywords as string-array,
  .Take(n)          //  and return the first `n` items

Liste des mots clés disponibles dans C # .NET.


C # .NET, 30 octets (opérateurs)

n=>"+-/*&|^~<>".Substring(0,n)

Essayez-le en ligne.

Kevin Cruijssen
la source
2

Charm , 52 octets

Cela génère tous les mots réservés dans Charm.

" [  := :: \"   " 0 2 copyfrom 3 * substring pstring

Étant donné que tout le code non récursif de Charm est compatible en ligne, il s'agit d'une fonction anonyme. Appelez comme ceci:

4 " [  := :: \"   " 0 2 copyfrom 3 * substring pstring 

(sorties [ := :: ", les quatre seuls mots réservés.)


Attribuer un nom à cette fonction ajoute 5 octets:

f := " [  := :: \"   " 0 2 copyfrom 3 * substring pstring
Aearnus
la source
2

Brain-Flak , 122 120 octets

({}<((((((((((((((()()){}()){}){}){})())[][]){}())()())[(([][]){}){}()])()())){}())[()()])>){({}<{({}<>)(<>)}{}>[()])}<>

Essayez-le en ligne!

Je fais juste ma part pour remplir les exemples de langues. Sorties ()[]<>}{, ressortant par l'avant pour les nombres inférieurs à 8.

Jo King
la source
2

Unaire , 6072204020736072426436 378380483266268 octets

+[>+<+++++]>---. (0o12602122222703334)

Merci Jo King pour la réduction de 99,99999373768646738908474177860631%

l4m2
la source
1
Le nombre d'octets est-il correct?
mdahmoune
@mdahmoune Je pense que oui
l4m2
!! C'est très gros
mdahmoune
@mdahmoune C'est en fait assez « petit » pour Unary. ;) Si vous recherchez d'autres réponses Unary ou Lenguage ici sur PPCG, il y en a beaucoup, beaucoup plus que cela.
Kevin Cruijssen
Est-ce ,[.-]qu'en Lenguage correspond à l'exigence?
l4m2
2

Rubis , 50 49 octets

->n{%w[do if or in end not for def nil and][0,n]}

Essayez-le en ligne!

Ne pas utiliser les opérateurs ( +, |, etc.).

Asone Tuhid
la source
2

Rubis, 71 68 octets

->n{(?a..'zzz').reject{|x|begin;eval x+'=n';rescue Object;end}[0,n]}

D'accord, pas l'approche la plus courte, mais trop amusante pour ne pas poster. Recherche par programme toutes les chaînes de jusqu'à trois lettres minuscules qui ne peuvent pas être attribuées. Il se trouve qu'il y en a exactement 10:["do", "if", "in", "or", "and", "def", "end", "for", "nil", "not"] .

Edit: sauvé 3 octets grâce à Asone Tuhid.

histocrate
la source
1
Bien, vous pouvez économiser 3 octets en sauvant Objectcar c'est une superclasse deException
Asone Tuhid
2

Japt , 3 octets

Renvoie une chaîne, chaque caractère individuel étant un nom de méthode dans Japt.

;îC

Essayez-le

;Cest l'alphabet minuscule et le îrépète jusqu'à ce que sa longueur soit égale à l'entrée.

Hirsute
la source
@Downvoter, vous avez oublié de laisser un commentaire! : \
Shaggy
Il semble que quelqu'un ait voté contre toutes les réponses: /
mdahmoune
2

Poulet , 7 octets

chicken

Pas une réponse sérieuse. Mais cela doit être ici.

jimmy23013
la source
2

R , 76 62 60 57 octets

12 octets économisés grâce à MickyT

5 octets économisés grâce à snoram

cat(c("if","in",1:0/0,"for",F,T,"NULL","else")[1:scan()])

Essayez-le en ligne!

Il n'y a pas beaucoup de mots réservés dans R mais ceux-ci sont parmi les plus courts à encoder. Il n'y en a que 9 ici, mais si une entrée de 10est donnée, une valeur manquante NAest ajoutée à la fin de la liste et imprimée.

Giuseppe
la source
Quelques petites économies rapides
MickyT
@MickyT merci! J'ai réalisé que je pouvais stocker "NaN"aussi 0/0ou NaNaussi pour un autre couple d'octets.
Giuseppe
remplacer 1/0,0/0par 1:0/0.
snoram
2
@snoram ah, excellent! Et bienvenue chez PPCG! J'attends avec impatience votre première réponse ici! Jetez un oeil à des conseils pour jouer au golf dans R et n'hésitez pas à me cingler dans le chat! :-)
Giuseppe
Merci! @Giuseppe btw. 1[1:2]renvoie [1] 1 NA=> vous pouvez ignorer NAle vecteur d'origine ... si l'entrée utilisateur est 10, elle sera ajoutée à la fin.
snoram
1

Espace , 84 octets

[S S S T    S S S S S N
_Push_32][S N
S _Duplicate][T N
S S _Print_as_character][S N
S _Duplicate][T N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve][S S S T  N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][N
T   S N
_If_0_Jump_to_Label_EXIT][S S S T   S S T   N
_Push_9][T  N
S S Print_as_character][S S S T N
_Push_1][T  S S T   _Subtract][N
T   S N
_If_0_Jump_to_Label_EXIT][S S S T   S T S N
_Push_10][T N
S S _Print_as_character][N
S S N
_Create_Label_EXIT]

Lettres S(espace), T(tabulation) et N(nouvelle ligne) ajoutées uniquement en surbrillance.
[..._some_action]ajouté à titre d'explication uniquement.

Les espaces blancs ne contiennent que trois «mots clés» valides: les espaces, les tabulations et les nouvelles lignes.

Explication en pseudo-code:

Print space
Integer i = STDIN as integer - 1
If i is 0:
  Exit program
Else:
  Print tab
  i = i - 1
  If i is 0:
    Exit program
  Else:
    Print new-line
    Exit program

L'exemple s'exécute:

Contribution: 1

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                          <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:1}    1
TTT           Retrieve                    [1]        {32:1}
SSSTN         Push 1                      [1,1]      {32:1}
TSST          Subtract top two (1-1)      [0]        {32:1}
SNS           Duplicate top (0)           [0,0]      {32:1}
NTSN          If 0: Jump to Label_EXIT    [0]        {32:1}
NSSN          Create Label_EXIT           [0]        {32:1}
                                                                                 error

Le programme s'arrête avec une erreur: aucune sortie définie.
Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).
Génère un seul espace.

Contribution: 2

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                         <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:2}    2
TTT           Retrieve                    [2]        {32:2}
SSSTN         Push 1                      [2,1]      {32:2}
TSST          Subtract top two (2-1)      [1]        {32:2}
SNS           Duplicate top (1)           [1,1]      {32:2}
NTSN          If 0: Jump to Label_EXIT    [1]        {32:2}
SSSTSSTN      Push 9                      [1,9]      {32:2}
TNSS          Print as character          [1]        {32:2}             \t
SSSTN         Push 1                      [1,1]      {32:2}
TSST          Subtract top two (1-1)      [0]        {32:2}
NTSN          If 0: Jump to Label_EXIT    []         {32:2}
NSSN          Create Label_EXIT           []         {32:2}
                                                                                 error

Le programme s'arrête avec une erreur: aucune sortie définie.
Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).
Génère un espace, suivi d'un onglet.

Entrée: 3(ou supérieure)

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                          <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:3}    3
TTT           Retrieve                    [3]        {32:3}
SSSTN         Push 1                      [3,1]      {32:3}
TSST          Subtract top two (3-1)      [2]        {32:3}
SNS           Duplicate top (2)           [2,2]      {32:3}
NTSN          If 0: Jump to Label_EXIT    [2]        {32:3}
SSSTSSTN      Push 9                      [2,9]      {32:3}
TNSS          Print as character          [2]        {32:3}             \t
SSSTN         Push 1                      [2,1]      {32:3}
TSST          Subtract top two (2-1)      [1]        {32:3}
SSSTSTSN      Push 10                     [1,10]     {32:3}
TNSS          Print as character          [1]        {32:3}             \n
NSSN          Create Label_EXIT           []         {32:3}
                                                                                 error

Le programme s'arrête avec une erreur: aucune sortie définie.
Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).
Génère un espace, suivi d'un onglet, suivi d'une nouvelle ligne.

Kevin Cruijssen
la source
1

Brain-Flak , 118 octets

({}<(((((((((((()()()()()){}){}){})())(([][][])){}{}())()())([][][])[]{})()())[][][][][])()())>){({}<({}<>)<>>[()])}<>

Essayez-le en ligne!

# Push stuffs under the counter
({}<(((((((((((()()()()()){}){}){})())(([][][])){}{}())()())([][][])[]{})()())[][][][][])()())>)

# While True
{
    # Decrement the counter
    ({}<

        # Toggle a character
        ({}<>)<>
    >[()])
}

# Display alternate stack
<>
James
la source
Cela imprime des octets nuls supplémentaires pour 9 et 10
Jo King
1

05AB1E , 2 octets

Essayez-le en ligne!


Chaque lettre de l'alphabet est une commande dans 05AB1E.

Tout cela ne fait qu'imprimer les premières Nlettres de l'alphabet.

Urne de poulpe magique
la source
1

> <> , 11 10 9 octets

1-:n:0=?;

Essayez-le en ligne!

Il s'est avéré que la solution la plus simple était la meilleure. Cela génère les n premiers nombres, à partir de 0.

Anciennes solutions de 10 octets

"'r{$[>o<3

Essayez-le en ligne!

Quelques alternatives de 10 octets:

  • "':1+{[>o<
  • "r:n[~>o<a
  • "'a{[>o<bc
Jo King
la source
1

Haskell , 22 octets

(`take`"';,=\"@\\`|~")

Essayez-le en ligne!

Merci à @Angs d'avoir détecté des erreurs de mots clés.

Je pensais que cela pourrait être plus court en générant la chaîne au lieu de la définir explicitement, mais je n'ai pas pu trouver une plage de 10 caractères ASCII consécutifs qui sont des mots clés Haskell (j'en ai trouvé certains qui sont proches, si vous comptez les mots clés d'extension de langue). S'il y en a un, vous pouvez le réduire à 15 octets avec ceci, en le remplaçant %par le caractère de départ:

(`take`['%'..])

Sans mots clés symboliques:

Haskell , 58 octets

(`take`words"of in do let then else case data type class")

Essayez-le en ligne!

user9549915
la source
!n'est pas réservé, par exemple let a!b=a+best très bien
Angs
Oups, vous avez raison. Correction des deux parties, car asest également un identifiant valide.
user9549915
.n'est pas réservé non plus - aucun des autres opérateurs en prélude comme +etc. ne le sont - voir ceci
Angs
1

C (gcc) , 62 60 octets

-2 grâce au GPS

f(n){puts("autocasecharelseenumgotolongvoidint do"+40-4*n);}

Essayez-le en ligne!

Je veux dire ... il n'a jamais été nécessaire de séparer les mots clés.

Dans le cas où j'ai mal lu - ou si vous êtes plus intéressé par quelque chose de plus dans l'esprit de la question - voici une version alternative avec des espaces de séparation:

C (gcc) , 69 octets

f(n){puts("auto case char else enum goto long void int  do"+50-5*n);}

Essayez-le en ligne!

gastropner
la source
Avez-vous besoin des deux espaces après do?
Jo King
@JoKing Oui, sinon des caractères poubelles pourraient être écrits.
gastropner
Vous pouvez supprimer les espaces après dosi vous utilisez des fonctions de sortie de chaîne. 69 octets: Tio
GPS
1

Taxi, 509 octets

"[]a lrnsew" is waiting at Writer's Depot. Go to Post Office: w 1 l 1 r 1 l. Pickup a passenger going to The Babelfishery. Go to The Babelfishery: s 1 l 1 r.Pickup a passenger going to The Underground.Go to Writer's Depot: n 1 l, 1 l, 2 l.Pickup a passenger going to Chop Suey.Go to Chop Suey: n, 3 r, 3 r.[a]Pickup a passenger going to Post Office.Go to Post Office: s 1 r 1 l 2 r 1 l.Go to The Underground: n 1 r 1 l.Pickup a passenger going to The Underground.Go to Chop Suey: n 2 r 1 l.Switch to plan "a".

Cela prend une chaîne codée en dur en haut et en imprime "n" caractères, puis des erreurs avec "erreur: aucun passager sortant trouvé".

La chaîne contient:

  1. [et ]les caractères utilisés pour déclarer un plan
  2. a utilisé dans la syntaxe "Ramasser un passager ...".
  3. Le caractère espace, qui est nécessaire pour séparer les morceaux de syntaxe
  4. let r, abréviation de "gauche" et "droite", utilisé pour indiquer au conducteur dans quel sens tourner.
  5. n, s, eEt w, les quatre directions.

Je crois que tous ceux-ci comptent comme un seul mot-clé de caractère. Non golfé:

"[]a lrnsew" is waiting at Writer's Depot.
Go to Post Office: west, 1st left, 1st right, 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south, 1st left, 1st right.
Pickup a passenger going to The Underground.
Go to Writer's Depot: north, 1st left, 1st left, 2nd left.
Pickup a passenger going to Chop Suey.
Go to Chop Suey: north, 3rd right, 3rd right.
[print character]
Pickup a passenger going to Post Office.
Go to Post Office: south, 1st right, 1st left, 2nd right, 1st left.
Go to The Underground: north, 1st right, 1st left.
Pickup a passenger going to The Underground.
Go to Chop Suey: north, 2nd right, 1st left.
Switch to plan "print character".
pppery
la source
1

J , 15 octets

[:u:46,"0~65+i.

Essayez-le en ligne!

Donne un tableau de chaînes A.à J..

Les mots en pointillés dans J agissent comme des structures intégrées (telles que a.ou A.) ou des structures de contrôle (telles que if.ou do.), ou jettent simplement une erreur d'orthographe. Aucun d'entre eux ne peut être utilisé comme identifiant.

Moins intéressant, 15 octets

{.&'!#$%^*-+=|'

Essayez-le en ligne!

Donne certains des 10 verbes à un octet.

Bubbler
la source
1

Utilitaires Bash et Shell 20 octets

compgen -b|head -$1

Vous pouvez enregistrer cela dans un fichier avec des autorisations d'exécution (intégrées) et l'exécuter sous bash comme ceci:

$ ./builtins 5
 .
 : 
 [
 alias 
 bg  

Génère les premiers N bash intégrés.

Si vous utilisez un shell autre que bash, vous aurez besoin de la ligne shebang #! / Bin / bash au début du fichier, pour + 12b

whofferbert
la source
1

QBasic, 60 octets

INPUT n
?LEFT$("CLS FOR DEF RUN DIM PUT GET SUB END IF",n*4)

Cette réponse correspond le mieux à l'esprit de la question, je crois: produire des mots-clés réservés alphabétiques avec des espaces entre les deux. Je ne pense pas que les opérateurs symboliques comptent vraiment comme des "mots" dans QBasic, mais pour être complet, voici une réponse de 30 octets utilisant des opérateurs:

INPUT n
?LEFT$("+-*/\^=><?",n)
DLosc
la source