Imprimer le dernier, le milieu et le premier caractère de votre code


60

Le défi est simple: imprimez le dernier caractère, le milieu et le premier caractère du code source de votre programme, dans cet ordre.

Le caractère du milieu est défini comme suit, en supposant une longueur source de ncaractères et une indexation 1:

  • Si nest égal, affiche les n/2-th et n/2 + 1-thes caractères. ( abcdef == cd)
  • Si nest impair, imprimez le (n-1)/2 + 1caractère. ( abcde == c)

Règles

  • En l'absence de saisie, imprimez le dernier, le milieu et le premier caractère de votre code source, dans le formulaire [last][middle][first]. Ce sera 3-4 caractères.
  • La sortie ne doit contenir aucun espace de fin. Toutefois, si l’espace est le premier, le deuxième ou le dernier caractère, il doit être imprimé tel quel.
  • Le code source doit être n >= 3long.
  • Le code doit être composé de >= 3caractères uniques.
  • Les failles standard sont interdites.
  • C'est du , donc la solution la plus courte pour les personnages gagne.

Des échantillons

# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1

Proposition de défi


6
Peut-être que ce n'est que moi, mais "Le code doit être composé de> = 3 caractères uniques." suggère que tous les caractères du programme doivent être uniques, alors que vous n’avez besoin que d’au moins 3 caractères distincts.
Grzegorz Oledzki le

4
@Belhenix Moins de trois caractères uniques permettent des solutions aussi simples que 121pour un grand nombre de langues.
Khuldraeseth na'Barya Le

2
Si quelqu'un peut trouver un langage basé sur la pile qui utilise -pour la négation et imprime implicitement avec un saut de ligne, \n1-est un trois en trois. Ma recherche a jusqu'ici été infructueuse.
Khuldraeseth na'Barya Le

3
@Belhenix Whitespace est certainement possible, il contient suffisamment de caractères valides uniques (espace, saut de ligne, tabulation).
bigyihsuan

2
Vous ne pouvez pas le changer maintenant avec 58 réponses, mais imposer "La première lettre de code doit être différente de la dernière lettre de code" aurait permis d'éliminer de nombreuses réponses triviales, y compris la première réponse actuelle. C'était peut-être l'intention de "> = 3 caractères uniques", mais cette exigence n'est pas très difficile.
manassehkatz

Réponses:


171

JavaScript, 9 7 octets

N=>a=-N

Les sorties: NaN

Essayez-le en ligne!


4
Très intelligent. C’était le tact que j’essayais de prendre, mais je ne pouvais tout simplement pas tomber sur une langue avec une sortie d’erreur assez courte.
ouflak

49
C’est l’une des meilleures réponses javascript que j’ai jamais vue ici
Daniel

21

Herbe , 17 octets

wWWwwwVVwWWwWWWww

Essayez-le en ligne!

-2 octets grâce à jimmy23013.

Sorties www. Grass ignore tous les personnages sauf w, Wet v. Les deux Vs sont donc ignorés; ils sont là pour s'assurer que le caractère du milieu est un w- je n'ai aucune idée de la sortie vou Wde Grass… J'aurais pu utiliser un autre caractère à la place de V, mais je Vconserve l'esthétique du code.


1
" Heureusement, le personnage du milieu a fini par être aw et pas av ou W - je ne sais pas comment afficher v ou W dans Grass ... " Lol. xD J'ai essayé de faire quelque chose de similaire dans Whitespace, n'ayant que trois caractères (espace, tabulation, nouvelle ligne), mais malheureusement, je n'ai pas été aussi chanceux. Heureusement, je peux simplement ajouter une série de no-ops finaux pour résoudre ce problème.
Kevin Cruijssen le

@KevinCruijssen Si le personnage du milieu avait été autre chose, j'aurais probablement ajouté au milieu un groupe de xs (ou tout autre personnage non Grass, que Grass ignore) pour déplacer un élément wau bon endroit.
Robin Ryder

Ah, je suis un idiot .. Je peux aussi insérer un caractère non-blanc que Whitespace va ignorer. ;) -2 octets grâce à vous.
Kevin Cruijssen le

1
17 octets :wWWwww  wWWwWWWww
jimmy23013

@ jimmy23013 Merci! Et merci d'avoir posté votre astuce ; J'avais besoin de comprendre ce que tu as fait! J'ai changé les espaces en Vs parce que je le trouve plus joli. ;-)
Robin Ryder

17

brainfuck , 17 octets

U-[>+<-UU--]>...U

Essayez-le en ligne!

Pour les fichiers non imprimables, cela peut être réduit à 7 octets: ␀..␀_.␀


1
Dans les règles, mais BF ne l'utilise pas Ucomme instruction. Fonctionnellement, le code est -[>+<---]>., donc la sortie attendue serait .--, mais elle ne serait pas sortie.
bigyihsuan

16
@bigyihsuan mais le code source contient toujours le Us et cet interprète les ignore heureusement. Est-ce que toutes les réponses comportant des commentaires ou des espaces (ou tout ce qui importe peu pour la langue) doivent être prises en compte?
Dzaima

1
Ça ne devrait pas être ça U-[>+<-UU--]>...U? Dans sa forme actuelle, le code ne montre qu'un seul U
Helena

1
@Flater Oui, ici, ils sont utilisés pour faciliter le défi, mais n'est-ce pas le but de la balise code-golf ? Beaucoup de réponses ici seules facilitent leur travail en ajoutant des espaces de début / fin, et en général dans le code-golf, tout ce qui suit les règles est autorisé (et si je devais deviner, s'il existait une règle interdisant les caractères inutilisés déjà quasiment impossible) signifierait que le défi planerait peut-être encore à 0 score et sera probablement fermé aussi).
dzaima

2
Pourquoi n'utilisez-vous pas simplement ÿ-.ÿ..ÿ? C'est imprimable et court.
Dorian

17

Langage de programmation Shakespeare , 119 octets

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

Essayez-le en ligne!

Imprime trois espaces. Sans espaces d'impression:

Langage de programmation Shakespeare , 227 octets

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

Essayez-le en ligne!

Comme ma réponse INTERCAL sans nouvelle ligne, elle est conçue pour que le dernier caractère du programme soit identique au caractère du milieu (bien que dans ce cas ce ne soit pas aussi le premier), en désactivant la seconde moitié du code jusqu'à ce qu'ils soient lus. rencontre. (Je ne suis pas sûr si j'aurais pu construire 46 en moins d'octets ou non, ou si j'aurais pu jouer d'autres parties de la première moitié de plus.)


2
Je ne m'attendais pas à ce que Shakespeare se présente pour cela. C'est super
bigyihsuan

1
Si seulement je pouvais +1 pour apprendre que cette langue existait!
Stilez

1
même dans les messages de sortie du débogage de l'interprète en ligne, le sens de l'humour des auteurs montre: Avertissement à la ligne 2: "esprit" attendu
dlatikay

1
163 octets pour la deuxième version en terminant par!
Robin Ryder

1
@ UnrelatedString OK, merci! Fait .
Robin Ryder

14

Python 2 , 13 à 11 octets


print' t' 

Pour rendre les espaces clairs:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

Essayez-le en ligne!

-2 octets, grâce à wastl!


6
Les deux espaces de sortie sont des espaces (fin de ligne), ce qui n'est pas autorisé. Python 2 alternative: Essayez-le en ligne!
wastl le

De plus, je ne pense pas que cela soit valide: Python exige que vous ayez une nouvelle ligne vide à la fin de votre code.
Geza Kerecsenyi le

5
@GezaKerecsenyi Si je comprends bien, une nouvelle ligne à la fin du code source n'est qu'une recommandation. Voir PEP8.
mypetlion le


@wastl Merci! Fixé.
TFeld le

11

RProgN 2 , 3 octets

1
0

Essayez-le en ligne!

Je pense que c'est valide?


Je devine 1et suis 0poussé sur une pile, puis un pop-print implicite à la fin du programme? Oui c'est valide
bigyihsuan

2
@bigyihsuan c'est ce que je devine aussi; Je ne connais pas la langue, je me souviens juste que ça fait des choses comme ça: p
dzaima

@dzaima Haha, lorsque vous postez une réponse et que vous ne savez même pas comment cela fonctionne. xD J'ai déjà vu RProgN plusieurs fois avec d'anciens [quine]défis, avant que les règles quine ne soient modifiées.
Kevin Cruijssen le

Je crois que c'est polyglotte sous tacLinux.
Tsh

11

05AB1E , 7 5 octets


„ RR

Sorties R \n.

-2 octets en vous inspirant de la réponse de @Neil 's Batch , assurez-vous donc de le faire revenir également!

Essayez-le en ligne.

Alternative de 5 octets par @Grimy :


12,1

Sorties 12\n.

Essayez-le en ligne.

Réponse initiale de 7 octets :

'?„«'«?

Sorties ?«'.

Essayez-le en ligne.

Explication:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline


8

PHP , 9 octets

<?=";;<";

Essayez-le en ligne!


3
En fait, depuis que PHP génère le code sous forme de texte jusqu'à la première <?balise, vous pouvez utiliser l'une des solutions triviales à 4 octets, comme par exemple 1231: tout élément sans caractère spécial comme premier et dernier, aucun autre caractère au milieu. Votre réponse peut être la réponse la plus courte en code réel PHP.
Manassehkatz


7

Excel, 9 octets

=("))=" )

Tant de parenthèses.

Remarque: le caractère du milieu renvoyé peut en réalité être n'importe quel caractère puisqu'il s'agit du centre du code.


Parenthèses! (Ampoule électrique) Je me suis retrouvé coincé avec le dernier personnage qui devait l'être ". Bien joué!
Wernisch

Merci! C’était quelque chose que j’essayais de comprendre également, puis je me suis rappelé que les parenthèses seraient efficaces.
William Porter

6

Ruby , 6 octets


p " "

Essayez-le en ligne!

Cette sortie " "plus une nouvelle ligne. Le code se termine par a ", les deux caractères du milieu sont et ", et il commence par une nouvelle ligne.


3
J'aime votre badge, je crois que c'est un xor en niveaux de gris sur N². J'ai généré presque la même image pour m'aider à résoudre un problème lié au projet Euler Nim. Votre badge a-t-il une histoire?
Damien

1
Belle prise! J'aime juste "gribouiller" pendant les réunions en générant des images en une ligne; xor était un favori tôt.
histocrat le

6

Langue de lot DOS / Windows, 9 octets

@echo @o@

Bienvenue dans Code Golf & Coding Stacks Exchange, +1 pour un premier post sympa!
Un _


5

Lot, 9 caractères


@echo hh

Le deuxième et le deuxième caractères sont les deux h, puis echoimprime une nouvelle ligne par défaut, qui est le premier caractère du script.


5

PowerShell, 3 octets

00000000: 0a0d 31                                  ..1

Fonctionne uniquement sous Microsoft Windows.

La sortie est malheureusement de 8 octets en UTF-16. Mais la question dit de sortir les caractères, et non les octets. UTF-16 n'est sans doute qu'un des moyens pris en charge pour représenter les caractères dans PowerShell. Ils ne sont pas interprétés différemment d'un fichier ASCII.


c'est une réponse intelligente
mazzy

1
autorisé parce que 0x0a != 0x0d != 0x31:)
bigyihsuan

5

Bash ( 15 à 11 caractères)

echo -n e-e

qui imprime

e-e
  • -4 caractères en n'utilisant pas |rev

1
@racraman Votre édition suggérée de echo<space>e<space><space>esortie sera produite à la e<space>e<newline>place de e<space>e, je l'ai donc rejetée. La nouvelle ligne fait partie de la sortie, c'est pourquoi GrzegorzOledzki utilise l' -noption. Essayez en echo -n e-eligne vs Essayez en echo e eligne . Et encore une fois, s'il vous plaît, ne modifiez pas la réponse des autres peuples. Si vous avez un golf à suggérer, laissez un commentaire.
Kevin Cruijssen

également 11 octets avec printf pfp, mais seulement parce que nous avons besoin de deux espaces à cause de cette définition du caractère du milieu, sinon ce serait 10 ...
pLumo

5

ArnoldC , 61 octets

IT'S SHOWTIME
TALK TO THE HAND "D I"
YOU HAVE BEEN TERMINATED

Essayez-le en ligne!

Réponse triviale dans ArnoldC. Le 31ème octet est l'espace juste avant le littéral de chaîne.


5

Sous-charge , 9 octets 7 octets

Merci à Khuldraeseth na'Barya pour la solution améliorée!

W(SSW)S

Pour autant que je sache, c'est maintenant impensable:

  • Le premier caractère doit être un caractère no-op, car chaque instruction génère une erreur car la pile est vide, à l'exception du crochet d'ouverture. Cependant, il ne peut en être ainsi car il n’existe aucun moyen de sortir un crochet d’ouverture lui-même dans Underload.
  • Vous devez utiliser au moins 5 caractères pour ajouter les 3 caractères de sortie à la pile.
  • Vous devez utiliser S pour le sortir.

Essayez-le en ligne!


Bienvenue chez Code Golf SE! Vous pouvez enregistrer quelques octets en ignorant la copie, comme ceci .
Khuldraeseth na'Barya

5

Langage de programmation Shakespeare , 163 153 octets

-10 octets grâce à Jo King.

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

Essayez-le en ligne!

Ma première réponse SPL! Sorties !BB.

Il existe une autre réponse SPL par Unrelated String; dans cette réponse, ils ne génèrent que des espaces de 119 octets ou des caractères de non-espace de 227 octets. Celui-ci se situe entre, et génère également des caractères non-espace.

Deux astuces sont utilisées ici:

  1. !.!25+1.
  2. Doubler 33 donne 66, le code codé de B, donc le titre de la pièce est Bet j'ai besoin que le second "gros" soit "Big", ce qui fonctionne puisque SPL est insensible à la casse.

Comme j'avais besoin de cette capitale Bet d'un point d'exclamation à la fin, j'ai décidé de faire hurler Ajax de plus en plus fort à travers la scène.


4

CJam , 7 octets

'@'' _@

Essayez-le en ligne!


4
Plutôt sûr, il 0 1 0est plus court et comporte également trois caractères distincts (je ne veux pas republier mon approche Jelly: P).
Erik the Outgolfer Le

1
@EriktheOutgolfer Bien cependant!. Mais c'est comme votre réponse, donc je vais laisser ça comme ça
Luis Mendo Le

2
Oui, c'est pourquoi j'ai commenté, je ne voulais pas vraiment poster deux fois la même chose. (Hm ... c'est peut-être la solution optimale pour de nombreuses langues.) Quoi qu'il en soit, la vôtre pourrait s'appliquer ailleurs aussi!
Erik the Outgolfer Le

4

Befunge-93 , 7 octets

.",  @0

Essayez-le en ligne!

Explication

La sortie est 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output

4

APL (Dyalog Unicode) , 5 à 4 octets

Programmes complets.

Solution ennuyeuse de J.Sallé:

1231

Imprime ce nombre. Une solution beaucoup plus intéressante:

010E1

Essayez-le en ligne!

APL ignore les zéros non significatifs, il s’agit donc simplement d’un format mis à l’échelle pour 10 × 10¹ = 100.


4

Chef , 447 octets

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

Essayez-le en ligne!

Une soumission sérieuse, 196 177 octets

grâce à A__

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

Essayez-le en ligne!


Voir les programmes Chef me fait me demander quel est le strict minimum.
bigyihsuan

@bigyihsuan see my edit
user24343

Vous pouvez supprimer tous les "the" et faire en sorte que le programme fonctionne toujours .
Un _

J'ai créé un programme de travail. (177 bytes)
Un _

4

Python 3, 19 octets 13 octets


print( ')(')

La fonction d'impression ajoute une nouvelle ligne par défaut afin que le code commence par une nouvelle ligne. Le dernier caractère du code est un ")", c'est donc imprimé en premier. Pour rendre le nombre de caractères irrégulier, un espace est inséré avant l'argument de la fonction d'impression. S'il vous plaît excuser la saluité du code.

Les sorties: )(\n

Essayez-le en ligne.


1
En fonction de la manière dont les règles fonctionnent, votre réponse peut être modifiée en 13 octets: `print (") (")` Notez qu'il y a une nouvelle ligne au print- dessus et un espace à l'intérieur printaprès ")(". Sorties: )( avec une nouvelle ligne à la fin.
Hoog

Merci, jusqu'à 13 octets! Étant donné que la question fait spécifiquement référence aux espaces, mais pas aux nouvelles lignes, je supposerai que les nouvelles lignes endsuivantes ne sont pas comptabilisées en tant que paramètre par défaut de la fonction d'impression.
jaaq

Ceci affiche un retour à la ligne de fin, mais n'en tient pas compte.
Un _

Je ne sais pas si les nouvelles lignes comptent comme des espaces, mais j'ai ajouté la deuxième version à 13 octets.
jaaq

1
Oui, les nouvelles lignes sont considérées comme des espaces, tout comme les tabulations et les espaces, entre autres
Jo King

4

Espaces blancs , 31 29 octets

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

-2 octets grâce à @RobinRyder .

Lettres S(espace), T(tabulation) et N(nouvelle ligne) ajoutées uniquement en surbrillance.
[..._some_action]ajouté comme explication seulement.

Essayez-le en ligne (avec des espaces bruts, des onglets et des nouvelles lignes uniquement).

Contient un no-op a(peut être n'importe quel caractère non-blanc) pour rendre la longueur impaire. Il est ajouté avant la première moitié du programme afin que le caractère du milieu soit également un espace, car le caractère du milieu serait devenu une nouvelle ligne s'il se trouvait dans la deuxième moitié du programme. Tous les caractères non-blancs sont ignorés dans les programmes Whitespace.



3

MathGolf , 5 4 octets

1231

-1 octet en utilisant la solution triviale présentée par @ErikTheOutgolfer dans sa réponse Jelly , qui fonctionne pour toutes les langues avec une sortie implicite sans fin de nouvelle ligne.

Essayez-le en ligne.

Réponse originale de 5 octets :

ùù xx

Sorties x ù.

Essayez-le en ligne.

Explication:

ùù x   # Push 3-char string "ù x"
    x  # Reverse it to "x ù"
       # (output the entire string joined together implicitly without trailing newline)

3

Brain-Flak , 11 octets

(((())))

Essayez-le en ligne!

Explication

Nous devons mettre 3 choses sur la pile. Le moyen le plus rapide de le faire est de mettre 3 1 (ou zéros) sur la pile. Maintenant que (point de code 1) ne fait rien dans Brain-Flak, nous pouvons les ajouter au programme au premier et au deuxième rang. Maintenant, cela semble un peu trompeur alors voici deux autres réponses qui sont moins trompeuses à mon avis.

Imprime les accolades, 31 octets

( (((((()()()()()){}){}){}))())

Essayez-le en ligne!

Cette réponse imprime des accolades de sorte que les caractères imprimés soient réellement pertinents pour le code. Elle comporte un caractère de remplissage pour rendre la longueur impaire, de sorte que nous ne devons imprimer qu'un seul caractère du milieu.

Contient seulement des accolades, 32 octets

(((()((((()(()()){}){}){}){}))))

Essayez-le en ligne!

Ceci est un programme entre accolades à la fois la source et (en conséquence) la sortie est entièrement composée d'accolades (le personnage de Brain-Flak se soucie en réalité).


3

AsciiDots - 9 octets

.---$'.$.

Sortie: .$.

Le code commence par un ., se termine par un .et le caractère du milieu est un $. La citation simple au milieu définit le mode d'impression par points pour qu'il lise simplement les caractères directement dans le flux de sortie.

Il est possible que cela soit réduit, mais je commence à en douter. Pour imprimer trois caractères, le guillemet simple doit être utilisé, car le guillemet double nécessiterait une fin à la chaîne pour pouvoir être imprimé. Cependant, cela signifie que la citation simple doit a) être suivie de trois caractères et b) ne peut pas être le caractère central. Afin de réduire le nombre d'octets à sept octets, j'ai envisagé d'essayer de réutiliser le début du point comme l'un des caractères imprimés (un peu comme le programme quine d'AsciiDot). Cependant, j’ai trouvé que la séquence la plus courte disponible pour l’impression était($'qui aurait dû imprimer quatre caractères sur trois, ou trois caractères sur quatre. J'ai aussi essayé quelques méthodes alternatives, comme essayer d'imprimer la valeur du point (qui est 0) en tant que l'un des caractères. Bien que certains systèmes fonctionnent, j’ai trouvé ceux-ci plutôt complexes et volumineux. Ainsi, je pense que ce qui précède est la plus petite solution. (Je mettrai à jour si je trouve quelque chose de plus petit)


Bienvenue chez Code Golf SE! Je me suis amusé avec cela pendant quelques minutes et je suis arrivé à la même conclusion que vous. Nice premier post!
Khuldraeseth na'Barya

1
Alternative 9 octets - /'$'-.[newline]\.Essayez-le en ligne!
Alion

3

MATLAB, 13 à 15 octets

disp(  ') d')

Les sorties ) d

Version précédente (15 octets, sortie moins stricte):

'''';1;''''''''

Les sorties '''


Je vois maintenant, maintenant inquiète.
Wheat Wizard le

Cette sortie n'est-elle pas à la fin des espaces?
Sanchises

@Sanchises Nope, taille (ans) == 3
18 octobre est un jour de silence SE

Oui, mais la sortie réelle est ans =\n '''\n. Ce n’est généralement pas un problème, mais ce défi semble imposer une norme plus stricte. Mais alors, j’interprète peut-être mal le défi.
Sanchises

@Sanchises hm, je vois. je pourrais mal comprendre ce que codegolf considère comme une "sortie", alors votre sortie semble être littéralement la sortie, formatée par MATLAB
18 octobre est un jour de silence sur SE
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.