La lettre A sans A

69

Votre tâche consiste à afficher la lettre "A" seule, sans rien d'autre, à l'exception de toute nouvelle ligne de fin si vous ne pouvez pas les éviter, dans un programme et / ou un extrait de code. Le code renvoyé (au lieu de l’impression) est autorisé.

Les versions minuscule et majuscule de la lettre "A" sont acceptables (c'est-à-dire unicode U + 0061 ou unicode U + 0041. Les autres encodages de caractères non Unicode sont autorisés. Toutefois, dans tous les cas, la sortie de votre code doit être la lettre latine "A", et non des sosies ou homoglyphes)

Vous ne devez utiliser aucun des caractères ci-dessous dans votre code, quel que soit le codage de caractères choisi:

  • " A ", en majuscule ou en minuscule.

  • " U ", en minuscule ou en majuscule.

  • X , majuscule ou minuscule.

  • +

  • Et

  • #

  • 0

  • 1

  • 4

  • 5

  • 6

  • sept

  • 9

La triche, les échappatoires, etc., ne sont pas autorisés.

Puisqu'il s'agit de , la solution la plus courte, en octets, qui respecte toutes les règles, est gagnante.


Vérificateur de validité

Cet extrait de pile vérifie que votre code n'utilise pas les caractères restreints. Cela pourrait ne pas fonctionner correctement pour certains encodages de caractères.

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

Cet extrait de pile garantissant que vous n'avez pas de caractère non autorisé est également disponible sur JSFiddle .

Classement

Tampon Over Read
la source
7
@ColdGolf Vous semblez dire "oui" aux fonctions, mais les fonctions ne s'affichent pas, elles reviennent généralement.
xnor
2
Est-ce que finir avec une variable qui contient tout aaussi bien?
Ton Hospel
1
Ce n'est pas ce que je voulais dire. Le code supposé faisant une affectation de variable ne contiendrait aucun des caractères interdits. J'essaie simplement de comprendre ce que recouvre "l'affichage par d'autres moyens que l'impression". Si "retourner d'une fonction" est OK, qu'en est-il "assigner à une variable"?
Ton Hospel
1
Pourquoi ces personnages particuliers?
user253751
7
@immibis Apour des raisons évidentes. Upour les chaînes d'échappement Unicode ( \u0041is A), Xpour les chaînes d'échappement hexadécimales ( \x41), +pour les ordinaux Unicode ( U+0041), &pour les entités HTML, #car je ne sais pas en fait, 65est l'ordinal décimal de A, 41est l'ordinal hexadécimal de A, 97est l'ordinal décimal de aet 0pour quelques-unes des raisons précédentes.
Mego

Réponses:

86

Pluso, 1 octet

o

Pluso Esolangs Page .

Pluso contient un seul accumulateur, qui commence par la valeur 1. Il utilise deux commandes, p qui incrémente l’accumulateur (mod 27) et o qui affiche la valeur actuelle sous forme de caractère majuscule ASCII, AZ ou espace (où 1-26 représente Respectivement AZ et 0 représente l’espace).

Comme l'accumulateur commence à 1, la commande o sans précédent p volonté sortie A .

cdw
la source
14
Bienvenue chez PPCG! Je recommanderais de mettre l'explication dans votre réponse, au cas où le lien disparaîtrait pour une raison quelconque.
TheBikingViking
Explication ajoutée. En attente de l'approbation du modérateur.
KPM
2
Merci pour la recommandation (et l'accueil), j'ai mis à jour ma réponse pour inclure une brève explication.
cdw
Je viens de voter pour vous mettre à 666 rep. Désolé pour ça.
Aidan F. Pierce
5
Cela n’échoue-t-il pas au test "is an esolang", car il ne peut pas vérifier la primalité?
Urne Magique Octopus
155

Python 2, 14 octets

print`3<3`[~3]

L'expression 3<3donne le booléen Falseet les backticks donnent sa représentation sous forme de chaîne 'False'. De là, il reste à extraire la lettre a. Python est indexé sur 0, donc the aest at index 1, qui est un caractère interdit. Cela peut être exprimé ainsi 3-2, mais il existe un moyen plus court. Python permet l'indexation à partir de l'arrière, avec l'index -1pour la dernière entrée, -2pour celle qui la précède, etc. Nous voulons un index -4, mais 4c'est aussi un nombre interdit. Mais, nous pouvons l'exprimer en ~3utilisant le complément de bits ~, ce qui donne -n-1pour ~n.

Xnor
la source
7
C'est une solution vraiment cool. Aussi, pourriez-vous faire [2]au lieu de [~3]?
DJMcMayhem
6
@DJMcMayhem Il est indexé sur 0 malheureusement, il en aurait besoin [1].
xnor
4
... pourquoi sont 1et 4les numéros "interdits" ??
Chris Cirefice
4
Les règles du challenge le disent.
xnor
20
J'envisage même maintenant d'utiliser "~ 0" comme "premier élément zéro indexé à partir de l'arrière". Je me demande pourquoi nous utiliserions la notation "-1" en Python ....
PascalVKooten
66

Pyth, 2 octets

hG

Testez-le dans le compilateur Pyth .

Comment ça fonctionne

 G  Yield the lowercase alphabet.
h   Extract the first character.
Dennis
la source
48

PHP, 9 à 6 octets

<?=O^_^Q;

Pour 9 octets: Inspiré par la réponse de @Ton Hospel . De plus, il présente l'avantage supplémentaire de ressembler un peu à un Kaomoji. :-)

La version améliorée de 6 octets:

<?=~¾;

où ¾ a le code hexadécimal de 0xBE (il est important de sauvegarder le fichier en codage Latin-1 , pas en UTF-8!).

YetiCGN
la source
Une version alternative est f^E^b.
Ismael Miguel
Oui, les solutions à 9 octets sont abondantes. J'ai commencé avec y ^ '8' et x ^ '9', malheureusement, les nombres doivent être transtypés en chaîne, sinon le type XOR sera un entier.
YetiCGN
23
+1 pour le visage^_^
Cyoce
La version à 6 octets ne s'imprime pas A. Cela imprime =A.
UTF-8
1
Je connais maintenant la réponse à cette énigme: Dans UTF-8 , le codepoint "fraction trois quarts" est codé sur deux octets: 0xC2 0xBE , 0xBE étant identique à ISO-8859-1 . J'ai remarqué que lorsque j'ai sauvegardé ceci dans un fichier de ma machine Linux, auquel je peux accéder via SSH avec UTF-8, le fichier a bien sûr 7 octets . Donc, sauvegardez le script avec l’encodage Latin-1 et ce sera 6 octets et non le =caractère.
YetiCGN
42

05AB1E, 3 2 octets

Th

Explication

T   # push 10
 h  # convert to hex

Essayez-le en ligne

Sauvé 1 octet grâce à Adnan

Emigna
la source
5
Thpour deux octets :)
Adnan
1
@ Adam Oh bien sûr. Hex :)
Emigna
32

brainfuck, 16 octets

-[-[---<]>>-]<-.

Ceci est basé sur l'algorithme brainfuck d'Esolang pour 159 .

Essayez-le en ligne!

Dennis
la source
3
Ceci .... c'est de la magie.
Conor O'Brien
3
Cette solution utilise la cellule à l'index -1, qui n'est pas prise en charge par tous les interpréteurs brainfuck et provoquerait un crash. Vous pouvez le lancer ici pour voir fatiherikli.github.io/brainfuck-visualizer/…
Cody
37
@Cody Sur PPCG, les langages sont définis par leur implémentation. Dans la mesure où un interprète se comporte comme vous le souhaitez, c'est une solution valable.
Dennis
3
Avez-vous eu de la difficulté à éviter les personnages interdits?
Hagen von Eitzen
1
@HagenvonEitzen J'ai dû creuser un peu pour trouver un algorithme à éviter +. (Le plus court chemin pour imprimer A serait >+[+[<]>>+<+]>.), mais grâce à la liste des constantes sur Esolang, pas trop difficile.
Dennis
30

JavaScript (ES6), 17 16 14 octets

Sauvé deux octets grâce à Neil!

_=>` ${-_}`[2]

Retourne le second caractère de NaN, qui est a.

C'est le plus court que j'ai pu trouver pour A, 43 42 octets:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Qui a dit qu'être un obfuscateur n'aidait pas le code golf? Pas moi!

Des explications

Le premier, en profondeur.

_=>` ${-_}`[2]

-_est NaN, car _est indéfini. Pour obtenir cela sous forme de chaîne, il faudrait l'une des opérations suivantes:

-_+""
`${-_}`
(-_).toString()

Le dernier est trop long, et le premier utilise +. Nous utilisons donc le second. Maintenant, le aest à l'index 1. Ce n'est pas bon, parce que 1c'est interdit. Cependant, étant une chaîne de gabarit, nous pouvons y insérer un espace pour le rendre à l'index 2, nous laissant ainsi avec ` ${-_}`.


Le second, en profondeur.

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Celui-ci était un doozy.

_=>`                                `[-~8]

Il s'agit du neuvième caractère de la chaîne de modèle interne, -~8égal à 9. Dans ce cas, cette chaîne de modèle est uniquement destinée à la personnification. C'est l'équation interne qui est en train d'être stratifié, entre ${...}:

[][`constr${`${!_}`[2]}ctor`]

Développons ceci un peu:

(new Array())[`constr${`${!_}`[2]}ctor`]

Cela obtient la propriété d'un tableau vide. Cette propriété est, bien sûr, une chaîne de modèle, mais elle est entourée de texte. C'est à peu près équivalent à:`constr${${!""}[2]}ctor`

"constr" + `${!_}`[2] + "ctor"

L'intérieur est à son tour équivalent à:

(!_).toString()[2]

!_est true(parce que _est undefined, et !undefined === true), et stringified est "true". Nous obtenons le second caractère de celui - ci, u; nous devons l'obtenir de cette façon pour éviter de mettre explicitement udans notre code.

Donc, ce bit intérieur équivaut à:

"constr" + "u" + "ctor" === "constructor"

Nous obtenons donc le constructeur du tableau, la Arrayfonction. Je ne pouvais pas y mettre explicitement parce qu'il contient l'interdit A. Maintenant, la stringification de la Arrayfonction rend "function Array() { [native code] }".

Retour au code original:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Ceci est équivalent à, comme nous l'avons vu:

_=>Array.toString()[-~8]

Équivalent à:

_=>Array.toString()[9]

Enfin équivalent à:

_=>"A"
Conor O'Brien
la source
1
@ColdGolf C'est bon.
Conor O'Brien
2
Serait-il contraire aux principes de l'obfuscateur d'ajouter une explication ...? Je suis curieux de savoir comment cela fonctionne.
Trichoplax
2
@trichoplax Je suppose que cela ne ferait pas de mal de révéler mes méthodes ici;) J'ai ajouté une explication pour les deux.
Conor O'Brien
1
@ OldBunny2800 N ° aest un personnage interdit, et est en toUpperCase.
Conor O'Brien
3
Je pensais que c'était Perl au début.
urous
29

Hexagonie , 4 octets

Ayyy lmao? Tout à fait golfy pour une langue non golfique haha. Code:

B(;@

Essayez-le en ligne!

Une forme plus lisible:

 B (
; @ .
 . .

Cela met la valeur ASCII de la lettre B, qui est 66, sur le bord de la mémoire en cours. Il le soustrait par un utilisateur (et l’imprime avec ;. Après cela, le programme est arrêté avec @.

Image de chemin obligatoire:

entrez la description de l'image ici

Adnan
la source
8
"plus lisible" + hexagonie = ???
Pas que Charles
18

Gelée , 3 octets

ØWḢ

Essayez-le en ligne!

Comment ça fonctionne

ØWḢ  Main link. No arguments.

ØW   Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_".
  Ḣ  Head; extract the first character.

Gelée, 4 octets

l-ṾṂ

Essayez-le en ligne!

Comment ça fonctionne

l-ṾṂ  Main link. No arguments.

l-    Take the logarithm of 0 with base -1. Yields (nan+infj).
  Ṿ   Uneval; yield the string representation, i.e., "nanıinf".
   Ṃ  Take the minimum, returning 'a'.
Dennis
la source
1
Dommage que la deuxième approche soit plus longue. ._.
Dennis
6
Merci d'avoir inclus la deuxième approche. C'est beau
trichoplax
18

En fait , 2 octets

úF

Essayez-le en ligne!

Explication:

úF
ú   lowercase English alphabet
 F  first element
Mego
la source
es-tu l'auteur? Je n'ai pas vu cette langue avant.
loa_in_
Je l'ai vu apparaître plusieurs fois dans des défis maintenant. Je pense que c'est le nom le plus intelligent des langues de golf sur le site :-) J'ai regardé Suits récemment et je trouve que c'est très Harvey.
CorsiKa
17

CJam, 3 octets

'@)

Essayez-le en ligne!

Comment ça fonctionne

'@   Push the character '@' on the stack.
  )  Increment its code point, yielding 'A'.
Dennis
la source
12

Bubblegum , 1 octet

"

ou

B

Tout le monde semblait oublier que ça existait ...

jimmy23013
la source
Jamais utilisé Bubblegum avant, alors peut-être excuser mon ignorance, mais où puis-je trouver les docs pour Bubblegum? De plus, j'ai essayé bubblegum.tryitonline.net avec vos deux réponses, mais cela ne semble pas produire quoi que ce soit.
Kevin Cruijssen
1
@KevinCruijssen Doc: esolangs.org/wiki/Bubblegum TIO semblait n'accepter que l'hexdump du code source, essayez-le ainsi: bubblegum.tryitonline.net/…
jimmy23013
Ah, c'est mon problème. ne pas utiliser l'hexdump. Merci et +1 pour être le plus court avec une réponse sur un octet (à égalité avec Pluso).
Kevin Cruijssen
@KevinCruijssen Il y a une réponse Pluso sur 1 octet. Il y a cependant quelques problèmes avec une règle de site étrange.
jimmy23013
10

Perl, 9 à 8 octets

xor est toujours autorisé, mais sayne l'est pas. Donc pour 9 octets:

print$/^K

Cependant, l’utilisation de la sortie vers STDERR donne 8 octets:

die~"\x9e\xf5"

Remplacer \x9eet \xf5par leurs versions littérales. Ou générez le fichier exécutable en utilisant:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl
Ton Hospel
la source
@ColdGolf: Ce n'est pas clair pour moi. Voulez-vous dire que je peux utiliser say(contient a) pour l'impression tant que la construction de l'argument n'utilise pas les caractères interdits?
Ton Hospel
"Cependant, vous ne devez utiliser aucun des caractères ci-dessous dans votre code: * A, en majuscule ou en minuscule." De cela, je print "No using the letter with code point 65";.
haykam
@ColdGolf est-ce que cela veut dire répondre à la question?
Hobbs
10

> <> , 6 octets

'|;o-$

cela crée une chaîne de caractères, rebondit et la crée à nouveau en sens inverse, retourne les 2 premiers éléments de la pile et soustrait: '|' (124) moins ';' (59) est 'A' (65)

Essayez-le en ligne

torcado
la source
2
Agréable! J'ai eu '$-o;|ce qui est presque le même mais sans rebondir. ( |;o-$'fonctionne également.)
randomra
1
@randomra oh vrai! ça irait certainement plus vite, si bon travail
torcado
10

Ruby, 15 12 octets

$><<to_s[-3]
Jordan
la source
1
Vous pouvez enregistrer 2 octets changer $><<à p , faitp to_s[-3]
Ephi
@Ephi pappelle inspectses arguments, ainsi le résultat sera cité, ce qui le disqualifiera.
Jordanie
J'ai raté cette partie du défi, je vais laisser ces commentaires, car je pense que c'est une information intéressante :)
Ephi
10

Java, 55 octets

void f(){System.err.write('c'-2);System.err.println();}

Étant donné que le code doit l’imprimer, l’un des deux rédacteurs intégrés est requis. System.outest, eh bien, dehors, car il contient u. System.errfonctionne, cependant.

Le prochain obstacle est le traitement de Java par charet int. Dans la mesure où il n’est pas autorisé de transtyper vers charcar il contient a, et parce qu’il 'c' - 2est promu int, un autre mécanisme est requis. System.errest un PrintWriter, qui a une write(char)méthode mais pas write(int). Mettre 'c' - 2dedans force à le faire charsans casting.

Enfin, chaque fois que j’exécutais le programme, le tampon System.errne vidait pas comme il était supposé, et le programme n’imprimait rien. Je devais donc le rincer manuellement. Cependant, System.err.flush()n'est pas autorisé, j'ai donc appelé pour println()vider implicitement le flux sous-jacent.


la source
9

MATL, 5 octets

YNVH)

Essayez-le en ligne

Explication

YN      % Creates a NaN value (not a number)
V       % Convert it to a string
H)      % Grab the second letter ('a')
        % Implicitly display the result

Ma réponse originale était l'approche avant droite en utilisant le littéral prédéfini lY2qui donne 'A'...'Z', puis en sélectionnant le premier élément, 'A'.

lY2l)
Suever
la source
9

Javascript, 18 octets 16 octets 12 octets 11 octets

` ${!2}`[2]

Basé sur les bases de jsfuck modifiées (devait comprendre comment remplacer +par -).

Ungolfed?

Eh bien, au moins une version avec des commentaires (notez que cette version ne fonctionnera probablement pas):

` ${      // whitespace to make "a" the third letter
  !2      // returns false
}`        // convert to string "false"
[2]       // index the third letter in " false" (note the whitespace)

Ancienne solution:

`${![]}`[-(-!![])]
bûcheron
la source
Vous pouvez remplacer la parenthèse par un espace entre les signes moins.
PurkkaKoodari
@ Pietu1998: Je remarque que 3est permis alors remplacé le tout avec ennuyeux 3-2pour obtenir1
slebetman
Enregistré un octet grâce à la réponse de Conor O'Brien
slebetman
1
Euh, pas d'infraction, mais c'est à peu près ma réponse. Sauf que vous utilisez false au lieu de NaN et que vous n'utilisez pas de fonction.
Conor O'Brien
8

Vim, 16 13 11 10 frappes

Merci à H Walters pour avoir économisé deux clés

Merci à DJMcMayhem pour en avoir sauvé un autre!

:h%<cr>jvyZZp
:h%<cr> #open help for percent
jvy     #move down one char (to the letter "a"), visual mode the character, yank
ZZ      #exit help for percent
p       #put yanked character
Citron destructible
la source
Très belle approche!
YetiCGN
2
Économisez 3 octets; au lieu d' :h<cr>essayer :h%<cr>. C'est un caractère supplémentaire, mais vous vous retrouvez sur l'aide pour %, avec votre curseur juste sur un a. Donc, à partir de là, vous pouvez remplacer 33llpar j.
H Walters
Toutes mes excuses pour une faute de frappe évidente (sauf 2 octets)
H Walters
Vous pouvez utiliser ZZau lieu de :q<cr>sauvegarder un autre.
DJMcMayhem
8

R, 27 12 octets

EDIT: Nouvelle version, d'une excellente idée de @Jarko Dubbeldam

LETTERS[T*T]

Tout un défi amusant!

Fondamentalement, cela prend l’ 26thélément du vecteur inversé contenant les lettres majuscules ( LETTERSqui est un vecteur intégré de R )

Version précédente s (même nombre d’octets) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]
Frédéric
la source
1
Un peu en retard, mais vous pouvez économiser un peu avec LETTERS[T*T]. Tévalue 1lors de l'exécution d'opérations numériques.
JAD
J'ai trouvé une solution plus courte!
Giuseppe
Ce n'est techniquement pas une solution - cela affiche "[1]" un "", plutôt que "un"
JDL
8

> <> , 7 4 octets

3 octets sauvés grâce au pélican de sarcelle

"-o.

Essayez-le en ligne!

Explication

"-o."   # pushes the string "-o."
-       # subtracts the charcode of o from the charcode of . (dot), 111-46=65
o       # prints as character
.       # tries to pop 2 coordinates to jump to, but as nothing is left on the stack
        # the program ends in an error
Emigna
la source
J'aurais fait"B"1-o;
DanTheMan
@DanTheMan Cela aurait dû être la solution la plus évidente. Je me demande pourquoi je n'y ai pas pensé: P
Emigna
@DanTheMan: - En partant de ce que Dan a posté, vous pouvez réduire davantage ce nombre; "1-o; B ou même mieux" + o; & comme les deux cas sont autorisés, attribuer 5 octets :) - vous pouvez même créer 4 octets avec une erreur; "-o.
Pélican sarcelle
@Tealpelican: C'est génial! L'utilisation de chaînes est souvent la plus courte des défis comme ceux-ci, mais je n'y ai même pas pensé :)
Emigna
Une fois que j'ai vu le commentaire de Dan, cela me faisait penser à un défi plus ancien, mais j'ai utilisé le même concept :)
Teal pélican
7

Vim, 2 frappes

vim -u NONEpuis exécutez ce qui suit ( -u NONEdésactive la personnalisation)

i<up>

Lorsque vim est exécuté en mode compatible, les touches fléchées ne sont pas interprétées correctement. <up>est interprété, <esc>OAce qui laisse les éléments suivants en mode insertion. Ce qui laisserait (avec un couple de nouvelles lignes de fuite)

A

idémarre le mode insertion.
<up>quitte le mode insertion, ouvre une ligne au dessus et entre A dans la mémoire tampon

Exemple de personnes rencontrant cela dans la nature. https://stackoverflow.com/questions/6987317/while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748

FDinoff
la source
J'ai ri en le lisant. C'est du bon travail. Grande militarisation de quelque chose que je connais mais auquel je n'aurais pas pensé.
dimanche
6

Brainfuck, 192 19 octets

----[>---<----]>--.

Merci à @NinjaBearMonkey de m'avoir aidé à économiser hella octets

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------.

Je ne suis pas bon chez Brainfuck, alors je suis sûr qu'il existe une solution plus courte, mais elle fonctionne en décrémentant jusqu'à 0, en renversant l'octet et en continuant jusqu'à ce que la valeur revienne à 'A', puis elle s'imprime.

Cody
la source
1
pas un concurrent sérieux. Si vous perdez vraiment le ballon, le votant pourrait inverser son vote
Citron destructible
Ne serait-il pas beaucoup plus rapide de compter jusqu'à 65, même avec 65 ans et plus?
NinjaBearMonkey
2
'+' n'est pas autorisé, j'ai donc dû reculer
Cody
Désolé, je n'ai pas vu ça. Il y a encore beaucoup plus court pour faire 191 , cependant.
NinjaBearMonkey
2
C'était la solution à 192 octets. Je l'ai simplement laissé tomber et j'ai barré la bande au lieu de la supprimer parce que je trouvais ça drôle de passer de 192 à 19 ans
Cody
6

JavaScript (ES6), 21 octets

_=>(8^2).toString(22)

À l’origine, j’ai essayé de convertir falseen chaîne pour le faire, mais cela me prenait 23 octets à la fois. J'ai depuis mis au point un moyen plus court, à savoir 14 octets:

_=>`!${!2}`[2]

Je ne pense pas que vous puissiez obtenir une majuscule en Avertu des règles, car vous en avez besoin d’une String.fromCharCodeou des .toUpperCase()deux qui contiennent a.

Neil
la source
Vous pouvez obtenir une majuscule en utilisant JSF ou une dérivée en utilisant des propriétés calculées.
Downgoat
1
@Downgoat Conor O'Brien a déjà montré comment.
Neil
6

C, (19?) 24 octets

Merci à Dennis:

f(){printf("%c",88-23);}

même longueur:

f(){printf("%c",'C'-2);}

ce qui permet aussi les minuscules:

f(){printf("%c",'c'-2);}

Il existe une solution de 19 octets en tant que fonction modifiant son paramètre, ce qui présente un défaut:

g(int*p){*p='C'-2;}

//Usage:

main(){
  int c; //cannot be char
  g(&c);
  printf("%c\n",c);
}

Si a cété déclaré char, gmodifie le tout de intmanière à écraser la pile, ce qui entraîne la modification d'autres valeurs ou l'abandon du programme avec un message d'erreur. La seule façon de contourner est de déclarer int c;dans mainet imprimer avec "%c", mais qui se sent comme une échappatoire.

solutions plus anciennes

f(){printf("%c",'B'-2/2);} //26 bytes
f(i){i='B';printf("%c",--i);} //29 bytes
f(){int*i="B";int j[]={*i-(2/2),2-2};printf("%s",j);} //53 bytes

Juste une fonction, car mainest interdite.

Karl Napf
la source
3
88-23devrait sauver quelques octets.
Dennis
Pour les minuscules a, vous pouvez utiliser (333-33) / 3-3. Ce n'est pas aussi court que 'c'-2, mais c'est 3er. 33 * 3-2 est également possible.
rici
Si vous utilisez write () au lieu de printf, vous pouvez en faire un programme; spécifiez les étapes de construction pour vous assurer de ne pas créer de lien avec aucune libc; s'il n'y a pas de _start, le premier symbole est sauté et _exit est autorisé, donc c'est sûr. Au moins une version de gcc optimisera write () dans l'appel système direct sans aucun appel de fonction.
Josué
En fonction de votre IDE, vous pouvez faire quelque chose comme ceci printf("%c",~'ɦ');:, bien que le "A" ait un accent ajouté heh
Albert Renshaw
@AlbertRenshaw ɦest un personnage de 2 octets
Karl Napf
6

dc, 4 octets

833P

Le débordement UCHAR_MAX parcourt la table six fois à trois reprises avant d'atterrir à 65 ans.

brhfl
la source
6

Lua, 36 octets

Celui - ci m'a pris un certain temps puisque plusieurs des fonctions standard de Lua sont prises loin des règles (tous math, string.char, string.match, pairs, même next)

Cela profite du fait que Lua a un global _VERSIONqui commence habituellement par "Lua" (par exemple, Lua 5.1ou similaire pour les autres versions). Ainsi, à moins que cela ne soit exécuté sur un interprète non traditionnel, le troisième caractère sera un "a"

print(({_VERSION:find("..(.)")})[3])

Le {...}[3]est de grouper les résultats, findce qui inclut également les index où il correspond, puis renvoie le troisième élément qui est le caractère correspondant (le a)

PiGuy
la source
1
print(({type{}:find".(.)"})[3]) 31 octets
Egor Skriptunoff
6

Haskell, 10 octets

En tant que fonction (ou plutôt une déclaration car aucune entrée n'est requise)

f=pred 'B'

fait le tour. Essayez-le sur Ideone. Un programme complet est impossible car il faudrait contenir un main.

Laikoni
la source
Je ne pense pas que cela soit valide. La tâche nécessite "d'imprimer" ou "d'afficher" A. Vos fonctions le renvoient et le programme lié l’affiche par l’intermédiaire de putCharquelles utilisations u.
nimi
Vous avez raison, cependant les règles ont été mises à jour et maintenant, le retour d'une fonction semble être ok.
Laikoni
Non, les règles disent toujours printet / ou display.
nimi
2
Dennis a demandé explicitement si le retour d'une fonction au lieu d'une impression est correct et OP a répondu par oui, mais le libellé mis à jour ultérieurement de la question ne reflète toujours pas cela. Je suppose que nous devons encore attendre des précisions supplémentaires.
Laikoni
1
L'OP a confirmé que Adevrait être imprimé / affiché et non retourné.
nimi
5

dc, 8 7 octets

-1B grâce à Dennis

88 23-P

Pousse 88, pousse 23, soustrait, laissant 65. Imprime le haut de la pile (65) en tant que chaîne ASCII, sans fin de nouvelle ligne.

Modifier:

Ce sont quelques-unes des autres façons que j'ai proposées. Il est devenu fondamentalement un jeu de "générer les nombres 65 et 97 en utilisant seulement [238B-F]et sans addition". Ironiquement, je trouve les plus longs les plus intéressants.

_Fdd/r-oC 2-n  # involves changing the base
2_2/8d*3*2/-P
Idd2/2/-2*on   # also changes base
2d8r^r_2/-P
8d*2_2/-P
B 3d**2-P
33 3*2-P
Joe
la source