Der Buchstabe A ohne A

69

Ihre Aufgabe ist es, den Buchstaben "A" alleine und ohne irgendetwas anderes anzuzeigen, mit Ausnahme von Zeilenumbrüchen, wenn Sie sie nicht vermeiden können, indem Sie dies in einem Programm und / oder einem Snippet tun. Code, der zurückgibt (anstatt zu drucken), ist zulässig.

Sowohl die Kleinbuchstaben- als auch die Großbuchstabenversion des Buchstabens "A" sind zulässig ( dh Unicode U + 0061 oder Unicode U + 0041) . Andere Zeichencodierungen, die nicht Unicode sind, sind zulässig, aber die resultierende Ausgabe Ihres Codes muss so oder so der lateinische Buchstabe "A" sein und keine Doppelgänger oder Homoglyphen)

Sie müssen nicht einen der unten stehenden Zeichen in Ihrem Code verwenden, unabhängig von der Zeichencodierung , die Sie wählen:

  • " A ", ob Groß- oder Kleinschreibung.

  • " U ", ob Klein- oder Großbuchstaben.

  • X , ob Groß- oder Kleinschreibung.

  • +

  • &

  • #

  • 0

  • 1

  • 4

  • 5

  • 6

  • 7

  • 9

Betrug, Schlupflöcher usw. sind nicht erlaubt.

Da dies , ist die kürzeste Lösung in Bytes, die allen Regeln folgt, der Gewinner.


Gültigkeitsprüfer

Dieses Stack-Snippet überprüft, ob in Ihrem Code die eingeschränkten Zeichen verwendet werden. Bei einigen Zeichenkodierungen funktioniert dies möglicherweise nicht ordnungsgemäß.

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

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

Dieses Stapel-Snippet, das sicherstellt, dass Sie keine unzulässigen Zeichen haben, ist auch in JSFiddle verfügbar .

Bestenliste

Puffer überlesen
quelle
7
@ColdGolf Sie scheinen zu Funktionen "Ja" zu sagen, aber Funktionen werden nicht angezeigt, sie kehren normalerweise zurück.
xnor
2
Liegt am Ende eine Variable vor, die gerade aauch gut genug ist?
Ton Hospel
1
Das ist nicht das, was ich meinte. Der angenommene Code, der eine Variablenzuweisung ausführt, würde keines der verbotenen Zeichen enthalten. Ich versuche nur zu verstehen, was unter "Anzeigen mit anderen Mitteln als Drucken" zu verstehen ist. Wenn "Rückkehr von einer Funktion" OK ist, was ist mit "einer Variablen zuweisen"?
Ton Hospel
1
Warum gerade diese Charaktere?
user253751
7
@immibis Aaus offensichtlichen Gründen. Ufür Unicode-Escape-Strings ( \u0041is A), Xfür Hex-Escape-Strings ( \x41), +für Unicode-Ordnungszahlen ( U+0041), &für HTML-Entitäten, #denn ich weiß eigentlich nicht, 65ist die Dezimal-Ordnungszahl von A, 41ist die Hex-Ordnungszahl von A, 97ist die Dezimal-Ordnungszahl von aund 0aus einigen der vorherigen Gründe.
Mego

Antworten:

86

Pluso, 1 Byte

o

Pluso Esolangs Seite .

Pluso enthält einen einzelnen Akkumulator, der mit dem Wert 1 beginnt. Er verwendet zwei Befehle, p, die den Akkumulator inkrementieren (Mod 27) und o, die den aktuellen Wert als ASCII-Großbuchstaben, AZ oder Leerzeichen (wobei 1-26 für steht) ausgeben AZ bzw. 0 steht für Leerzeichen).

Da der Speicher bei 1 startet, wird der Befehl o ohne vorherige p Willen Ausgang A .

cdw
quelle
14
Willkommen bei PPCG! Ich würde empfehlen, die Erklärung in Ihre Antwort aufzunehmen, falls der Link aus irgendeinem Grund abbricht.
TheBikingViking
Erklärung hinzugefügt. Warten auf die Genehmigung des Moderators.
KPM
2
Vielen Dank für die Empfehlung (und die Begrüßung), ich habe meine Antwort mit einer kurzen Erklärung aktualisiert.
CDW
Ich habe mich gerade erholt, um dich auf 666 Wiederholungen zu bringen. Das tut mir leid.
Aidan F. Pierce
5
Schlägt dies nicht fehl, wenn der Test "ist ein Esolang" durchgeführt wird, weil keine Primalitätsprüfung möglich ist?
Magic Octopus Urn
155

Python 2, 14 Bytes

print`3<3`[~3]

Der Ausdruck 3<3gibt den Booleschen FalseWert und die Backticks die Zeichenfolgendarstellung an 'False'. Von hier bleibt es, den Brief zu extrahieren a. Python ist 0-indiziert, das aist also at index 1, ein gesperrtes Zeichen. Es kann ausgedrückt werden als 3-2, aber es gibt einen kürzeren Weg. Python ermöglicht die Indizierung von hinten, mit Index -1für den letzten Eintrag, -2für den vorhergehenden usw. Wir wollen Index -4, aber es 4ist auch eine verbotene Zahl. Aber wir können es so ausdrücken, dass wir ~3das Bit-Komplement verwenden ~, das -n-1für gibt ~n.

xnor
quelle
7
Das ist eine wirklich coole Lösung. Könntest du es auch nicht tun [2]anstatt [~3]?
DJMcMayhem
6
@DJMcMayhem Es ist leider 0-indiziert, es würde brauchen [1].
Xnor
4
... warum sind 1und 4'verbotene' Nummern ??
Chris Cirefice
4
Die Regeln der Herausforderung besagen es.
Xnor
20
Ich denke jetzt sogar darüber nach, "~ 0" als "nullindexiertes erstes Element von hinten" zu verwenden. Ich frage mich, warum wir in Python die "-1" -Notation verwenden würden.
PascalVKooten
66

Pyth, 2 Bytes

hG

Testen Sie es im Pyth-Compiler .

Wie es funktioniert

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

PHP, 9 6 Bytes

<?=O^_^Q;

Für 9 Bytes: Inspiriert von der Antwort von @Ton Hospel . Außerdem hat es den zusätzlichen Vorteil, dass es ein bisschen wie ein Kaomoji aussieht. :-)

Die 6 Bytes verbesserte Version:

<?=~¾;

Dabei hat ¾ den Hex-Code 0xBE (es ist wichtig, die Datei in Latin-1-Codierung zu speichern , nicht in UTF-8!).

YetiCGN
quelle
Eine alternative Version ist f^E^b.
Ismael Miguel
Ja, die 9-Byte-Lösungen sind reichlich vorhanden. Ich habe mit y ^ '8' und x ^ '9' begonnen, leider müssen Zahlen in Strings umgewandelt werden oder es wird XOR, der resultierende Typ wird eine ganze Zahl sein.
YetiCGN
23
+1 für das Gesicht^_^
Cyoce
Die 6-Byte-Version wird nicht gedruckt A. Es druckt =A.
UTF-8
1
Ich kenne jetzt die Antwort auf dieses Rätsel: In UTF-8 wird der Codepunkt "Anteil Dreiviertel" als zwei Bytes codiert: 0xC2 0xBE , 0xBE entspricht ISO-8859-1 . Als ich das in einer Datei auf meiner Linux-Box speicherte, auf die ich mit UTF-8 über SSH zugreife, bemerkte ich natürlich, dass die Datei 7 Bytes groß ist . Speichern Sie das Skript mit der Latin-1-Codierung. Es enthält 6 Byte und gibt das =Zeichen nicht aus.
YetiCGN
42

05AB1E, 3 2 Bytes

Th

Erläuterung

T   # push 10
 h  # convert to hex

Probieren Sie es online aus

Dank Adnan 1 Byte gespeichert

Emigna
quelle
5
Thfür zwei Bytes :)
Adnan
1
@Adnan Oh natürlich. Hex :)
Emigna
32

Brainfuck, 16 Bytes

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

Dies basiert auf Esolangs Brainfuck-Algorithmus für 159 .

Probieren Sie es online!

Dennis
quelle
3
Das ... das ist Zauberei.
Conor O'Brien
3
Diese Lösung verwendet die Zelle mit dem Index -1, der nicht von allen Brainfuck-Interpreten unterstützt wird und zu einem Absturz führen würde. Sie können es hier ausführen
Cody
37
@Cody Bei PPCG werden Sprachen durch ihre Implementierung definiert. Solange es einen Interpreter gibt, der sich wie gewünscht verhält, ist dies eine gültige Lösung.
Dennis
3
Wie schwer war es für dich, den verbotenen Charakteren auszuweichen?
Hagen von Eitzen
1
@HagenvonEitzen Ich musste ein bisschen graben, um einen Algorithmus zu finden, der es vermeiden konnte +. (der kürzeste Weg zum Drucken von A wäre >+[+[<]>>+<+]>.), aber dank der Liste der Konstanten auf Esolang nicht zu schwer.
Dennis
30

JavaScript (ES6), 17 16 14 Bytes

Zwei Bytes gespart dank Neil!

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

Gibt das zweite Zeichen NaN, das ist a.

Dies ist die kürzeste, die ich mir vorstellen konnte A, 43 bis 42 Bytes:

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

Wer sagt, dass es beim Code-Golf nicht hilft, ein Verschleierer zu sein? Nicht ich!

Erklärungen

Der erste in der Tiefe.

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

-_ist NaN, weil _undefiniert. Um dies als Zeichenfolge zu erhalten, müsste eine der folgenden Bedingungen erfüllt sein:

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

Der letzte ist zu lang und der erste verwendet +. Also benutzen wir den zweiten. Jetzt ist der aIndex 1. Das ist nicht gut, weil 1es verboten ist. Da es sich jedoch um eine Vorlagenzeichenfolge handelt, können wir dort ein Leerzeichen einfügen, um sie am Index 2zu platzieren ` ${-_}`.


Der zweite in der Tiefe.

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

Dieser war ein Trottel.

_=>`                                `[-~8]

Dies ist das 9. Zeichen der inneren Vorlagenzeichenfolge, -~8das gleich 9 ist. In diesem Fall dient diese Vorlagenzeichenfolge nur zur Stringifizierung. Hierbei handelt es sich um die innere Gleichung, die zwischen den ${...}folgenden Elementen aufgestellt wird :

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

Lassen Sie uns dies etwas erweitern:

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

Dadurch wird die Eigenschaft aus einem leeren Array abgerufen. Diese Eigenschaft ist natürlich eine Vorlagenzeichenfolge, aber sie enthält Text. Es ist ungefähr gleichbedeutend mit:`constr${${!""}[2]}ctor`

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

Das Innere ist wiederum gleichbedeutend mit:

(!_).toString()[2]

!_ist true(weil _ist undefinedund !undefined === true) und stringifiziert ist "true". Wir bekommen den zweiten Charakter davon u; Wir müssen das auf diese Weise erreichen, um zu vermeiden, dass uunser Code explizit eingegeben wird .

Dieses innere Bit ist also äquivalent zu:

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

Also bekommen wir den Konstruktor des Arrays, die ArrayFunktion. Ich konnte das nicht explizit ausdrücken, weil es das Verbotene enthält A. Nun ergibt das Aufreihen der ArrayFunktion "function Array() { [native code] }".

Zurück zum Originalcode:

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

Dies entspricht, wie wir gesehen haben:

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

Gleichwertig:

_=>Array.toString()[9]

Endlich äquivalent zu:

_=>"A"
Conor O'Brien
quelle
1
@ColdGolf Es ist in Ordnung.
Conor O'Brien
2
Wäre es gegen die Prinzipien eines Verschleierers, eine Erklärung hinzuzufügen ...? Ich bin gespannt, wie das geht.
Trichoplax
2
@trichoplax Ich denke, es würde nicht schaden, meine Methoden hier zu offenbaren;) Ich habe eine Erklärung für beide hinzugefügt.
Conor O'Brien
1
@ OldBunny2800 Nr. Ist aein verbotenes Zeichen und ist in toUpperCase.
Conor O'Brien
3
Zuerst dachte ich, das wäre Perl.
Urous
29

Hexagony , 4 Bytes

Ayyy lmao? Ziemlich golfen für eine nicht-golfende Sprache, haha. Code:

B(;@

Probieren Sie es online!

Eine besser lesbare Form:

 B (
; @ .
 . .

Dies setzt den ASCII-Wert des Buchstabens B, der 66 ist, auf den aktuellen Speicherrand. Es subtrahiert es mit (und druckt es mit ;. Danach wird das Programm mit beendet @.

Obligatorisches Pfadbild:

Bildbeschreibung hier eingeben

Adnan
quelle
8
"lesbarer" + Hexagonie = ???
Nicht dass Charles
18

Gelee , 3 Bytes

ØWḢ

Probieren Sie es online!

Wie es funktioniert

ØWḢ  Main link. No arguments.

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

Gelee, 4 Bytes

l-ṾṂ

Probieren Sie es online!

Wie es funktioniert

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
quelle
1
Schade, der zweite Ansatz ist länger. ._.
Dennis
6
Vielen Dank für die Aufnahme des zweiten Ansatzes. Es ist wunderschön
Trichoplax
18

Eigentlich 2 Bytes

úF

Probieren Sie es online!

Erläuterung:

úF
ú   lowercase English alphabet
 F  first element
Mego
quelle
Bist du der Autor? Ich habe diese Sprache noch nie gesehen.
Loa_in_
Ich habe es jetzt ein paar Mal bei Herausforderungen gesehen. Ich denke, es hat den klügsten Namen einer der Golfsprachen auf der Website :-) Ich habe mir in letzter Zeit Anzüge angesehen und finde, dass es sehr Harvey ist.
CorsiKa
17

CJam, 3 Bytes

'@)

Probieren Sie es online!

Wie es funktioniert

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

Bubblegum , 1 Byte

"

oder

B

Jeder schien zu vergessen, dass es existierte ...

jimmy23013
quelle
Ich habe Bubblegum noch nie benutzt, entschuldige also vielleicht meine Unwissenheit, aber wo finde ich die Dokumente für Bubblegum? Außerdem habe ich bubblegum.tryitonline.net mit beiden Antworten ausprobiert , aber es scheint nichts auszugeben.
Kevin Cruijssen
1
@KevinCruijssen Doc: esolangs.org/wiki/Bubblegum TIO schien nur die hexdump des Quellcodes zu akzeptieren, so versuchen Sie es wie folgt aus : bubblegum.tryitonline.net/...
jimmy23013
Ah, das ist mein Problem. nicht mit dem hexdump. Vielen Dank und +1 für die kürzeste Antwort mit einem Byte (gebunden an Pluso).
Kevin Cruijssen
@ KevinCruijssen Es gibt eine 1-Byte-Pluso-Antwort. Es gibt jedoch einige Probleme mit einer seltsamen Site-Regel.
Jimmy23013
10

Perl, 9 8 Bytes

xor ist noch erlaubt, aber saynicht. Also für 9 Bytes:

print$/^K

Die Verwendung der Ausgabe in STDERR ergibt jedoch 8 Bytes:

die~"\x9e\xf5"

Ersetzen Sie \x9eund \xf5durch ihre wörtlichen Versionen. Oder generieren Sie die ausführbare Datei mit:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl
Tonne Hospel
quelle
@ColdGolf: Das ist mir nicht klar. Meinst du, ich kann say(enthält ein) zum Drucken verwenden, solange die Konstruktion des Arguments nicht die verbotenen Zeichen verwendet?
Ton Hospel
Msgstr "Sie dürfen jedoch keines der folgenden Zeichen in Ihrem Code verwenden: * A, unabhängig davon, ob es sich um Groß- oder Kleinbuchstaben handelt." Davon würde ich print "No using the letter with code point 65";.
Haykam
@ColdGolf soll das die Frage in irgendeiner Weise beantworten?
Hobbs
10

> <> , 6 Bytes

'|;o-$

dies erzeugt eine Zeichenkette, springt und erzeugt sie rückwärts erneut, dreht die obersten 2 Stapelelemente um und subtrahiert: '|' (124) minus ';' (59) ist 'A' (65)

Probieren Sie es online aus

Torcado
quelle
2
Nett! Ich habe '$-o;|was fast das gleiche aber ohne das Prellen. ( |;o-$'funktioniert auch.)
Randomra
1
@ Randomra oh wahr! das würde definitiv schneller laufen, so schöne Arbeit
torcado
10

Rubin, 15 12 Bytes

$><<to_s[-3]
Jordan
quelle
1
Sie können 2 Byte zu ändern speichern $><<zu p , machtp to_s[-3]
Ephi
@Ephi pruft inspectseine Argumente auf, sodass die Ausgabe in Anführungszeichen gesetzt wird, wodurch sie disqualifiziert würde.
Jordanien
Ich habe diesen Teil der Herausforderung verpasst, ich werde diese Kommentare lassen, da ich denke, dass es eine interessante Information ist :)
Ephi
10

Java, 55 Bytes

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

Da der Code gedruckt werden muss, ist einer der beiden integrierten Writer erforderlich. System.outist ja raus, weil es enthält u. System.errfunktioniert jedoch.

Die nächste Hürde ist Javas Umgang mit charund int. Da das Umwandeln in nicht zulässig ist, charweil es enthält aund 'c' - 2befördert wird, intist ein anderer Mechanismus erforderlich. System.errist eine PrintWriter, die eine write(char)methode hat aber nicht write(int). Wenn Sie 'c' - 2dort hineingehen, wird es charohne Besetzung ausgeführt.

Schließlich wurde jedes Mal, wenn ich das Programm ausführte, der Puffer System.errnicht so geleert, wie er sollte, und das Programm gab nichts aus. Also musste ich es manuell spülen. Ist System.err.flush()aber nicht erlaubt, also habe ich angerufen println()was implizit den zugrunde liegenden Stream leert.


quelle
9

MATL, 5 Bytes

YNVH)

Probieren Sie es online

Erläuterung

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

Meine ursprüngliche Antwort war der direkte Ansatz mit dem vordefinierten Literal, lY2das ergibt 'A'...'Z'und dann das erste Element auswählt 'A'.

lY2l)
Suever
quelle
9

Javascript, 18 Bytes 16 Bytes 12 Bytes 11 Bytes

` ${!2}`[2]

Auf Basis einer modifizierten jsfuck Grundlagen (hatte, um herauszufinden , wie zu ersetzen +mit -).

Ungolfed?

Nun, zumindest eine Version mit Kommentaren (beachten Sie, dass diese Version wahrscheinlich nicht ausgeführt wird):

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

Alte Lösung:

`${![]}`[-(-!![])]
Slebetman
quelle
Sie können die Klammer durch ein Leerzeichen zwischen den Minuszeichen ersetzen.
PurkkaKoodari
@ Pietu1998: bemerkte ich , dass 3die ganze Sache mit langweiligen so ersetzt ist erlaubt 3-2zu bekommen1
slebetman
Dank Conor O'Briens Antwort ein Byte
gespart
1
Äh, nichts für ungut, aber das ist so ziemlich meine Antwort. Es sei denn, Sie verwenden false anstelle von NaN und verwenden keine Funktion.
Conor O'Brien
8

Vim, 16 13 11 10 Tastenanschläge

Vielen Dank an H Walters für das Speichern von zwei Schlüsseln

Vielen Dank an DJMcMayhem für das Speichern eines weiteren!

: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
Zerstörbare Zitrone
quelle
Sehr schöner Ansatz!
YetiCGN
2
3 Bytes speichern; anstatt zu :h<cr>versuchen :h%<cr>. Das ist ein zusätzliches Zeichen, aber Sie landen in der Hilfe für %, mit dem Cursor rechts über einem a. Also von hier aus können Sie ersetzen 33llmit j.
H Walters
Entschuldigung für offensichtliche Tippfehler (außer 2 Bytes)
H Walters
Sie können ZZanstelle von :q<cr>eine andere speichern.
DJMcMayhem
8

R, 27 12 Bytes

EDIT: Neue Version, von einer ausgezeichneten Idee von @ Jarko Dubbeldam

LETTERS[T*T]

Eine ziemlich lustige Herausforderung!

Grundsätzlich wird das 26thElement des umgekehrten Vektors verwendet, das die Großbuchstaben enthält ( LETTERSdas ist der eingebaute Vektor eines R ).

Vorherige Version s (gleiche Anzahl von Bytes) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]
Frédéric
quelle
1
Ein bisschen zu spät, aber mit können Sie einiges sparen LETTERS[T*T]. TWertet aus, 1wenn numerische Operationen ausgeführt werden.
JAD
Ich habe eine kürzere Lösung gefunden!
Giuseppe
Dies ist technisch keine Lösung - es gibt '[1] "a" aus, anstatt nur' a '
JDL
8

> <> , 7 4 Bytes

3 Bytes dank Teal Pelican gespart

"-o.

Probieren Sie es online!

Erläuterung

"-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
quelle
Ich hätte getan"B"1-o;
DanTheMan
@DanTheMan Das hätte die naheliegendere Lösung sein sollen. Ich frage mich, warum ich nicht daran gedacht habe: P
Emigna
@DanTheMan: - Wenn Sie das tun, was Dan gepostet hat, können Sie dies weiter reduzieren. "1-o; B oder noch besser" + o; & in beiden Fällen ist es zulässig, diese 5 Bytes zu erstellen :) - Sie können sogar 4 Bytes mit einem Fehler erstellen; "-o.
Teal
@Tealpelican: Das ist genial! Die Verwendung von Zeichenfolgen ist bei solchen Herausforderungen oft am kürzesten, aber das habe ich nicht einmal in Betracht gezogen :)
Emigna
Als ich Dans Kommentar sah, erinnerte er mich an eine ältere Herausforderung wie diese, also benutzte ich einfach das gleiche Konzept :)
Teal
7

Vim, 2 Tastenanschläge

vim -u NONEFühren Sie dann Folgendes aus ( -u NONEdeaktiviert die Anpassung)

i<up>

Wenn vim im kompatiblen Modus ausgeführt wird, werden die Pfeiltasten nicht richtig interpretiert. <up>wird interpretiert, <esc>OAwas folgendes im Einfügemodus belässt. Welche würde verlassen (mit ein paar nachgestellten Zeilenumbrüchen)

A

iStartet den Einfügemodus.
<up>Beendet den Einfügemodus, öffnet eine Zeile darüber und gibt A in den Puffer ein

Beispiel für Menschen, die dies in freier Wildbahn erleben. https://stackoverflow.com/questions/6987317/ilst-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748

FDinoff
quelle
Ich lachte, als ich es las. Das ist gute Arbeit. Eine großartige Waffe für etwas, das ich kenne, an das ich aber nicht gedacht hätte.
Audioica
6

Brainfuck, 192 19 Bytes

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

Vielen Dank an @ NinjaBearMonkey, der mir geholfen hat, hella Bytes zu retten

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

Ich bin nicht gut in Brainfuck, also bin ich sicher, dass es eine kürzere Lösung gibt, aber es funktioniert, indem es unter 0 dekrementiert, das Byte überschlägt und so lange weitermacht, bis es auf 'A' abfällt. Dann wird gedruckt.

Cody
quelle
1
kein ernsthafter Konkurrent. Wenn Sie tatsächlich Golf spielen, kehrt der Abwähler möglicherweise seine Stimme um
Destructible Lemon
Wäre es nicht viel kürzer, auch mit 65 Plusses nur bis zu 65 zu zählen?
NinjaBearMonkey
2
'+' ist nicht erlaubt, also musste ich rückwärts gehen
Cody
Entschuldigung, das habe ich nicht gesehen. Es gibt jedoch immer noch viel kürzere Wege, um 191 zu machen .
NinjaBearMonkey
2
Das war die 192-Byte-Lösung, ich habe sie einfach weggelassen und durchgestrichen, anstatt sie zu löschen, weil ich dachte, es wäre lustig, von 192 auf 19 zu gehen
Cody
6

JavaScript (ES6), 21 Byte

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

Ich habe ursprünglich versucht, falsein einen String umzuwandeln , aber es hat damals 23 Byte gedauert. Ich habe mir seitdem einen kürzeren Weg ausgedacht, der für 14 Bytes ist:

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

Ich glaube nicht, dass Sie Anach den Regeln einen Großbuchstaben bekommen können , da Sie einen von String.fromCharCodeoder benötigen .toUpperCase(), die beide enthalten a.

Neil
quelle
Sie können ein mit JSF oder ein Derivat mit berechneten Eigenschaften in Großbuchstaben
abrufen
1
@Downgoat Conor O'Brien hat schon gezeigt wie.
Neil
6

C, (19?) 24 Bytes

Danke an Dennis:

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

die gleiche Länge:

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

was auch Kleinbuchstaben ermöglicht:

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

Es gibt eine 19-Byte- Lösung als eine Funktion, die ihren Parameter ändert und einen Fehler aufweist:

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

//Usage:

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

Wenn cdeklariert wurde char, wird gdas Ganze intso geändert, dass der Stack zerstört wird, wodurch andere Werte geändert werden oder das Programm mit einer Fehlermeldung abgebrochen wird. Der einzige Weg , zu umgehen , besteht darin zu erklären , int c;in mainund druckte mit "%c", aber das fühlt sich an wie ein Schlupfloch.

ältere Lösungen

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

Nur eine Funktion, da mainist verboten.

Karl Napf
quelle
3
88-23sollte ein paar Bytes sparen.
Dennis
Für Kleinbuchstaben a können Sie (333-33) / 3-3 verwenden. Es ist nicht so kurz wie 'c'-2, aber es ist 3er. 33 * 3-2 ist ebenfalls möglich.
rici
Wenn Sie write () anstelle von printf verwenden, können Sie daraus ein Programm machen. Geben Sie die Build-Schritte an, um sicherzustellen, dass Sie überhaupt keine Links zu libc erstellen. Wenn es keinen Start gibt, wird das erste Symbol angesprungen und das Verlassen ist erlaubt, so dass es sicher ist. Mindestens eine Version von gcc optimiert write () für den direkten Systemaufruf ohne Funktionsaufruf.
Joshua
Abhängig von Ihrer IDE können Sie so etwas tun: printf("%c",~'ɦ');Obwohl dem "A" ein Akzentzeichen hinzugefügt wird
Albert Renshaw
@ AlbertRenshaw ɦist ein 2-Byte-Zeichen
Karl Napf
6

Gleichstrom, 4 Bytes

833P

Der UCHAR_MAX-Überlauf rollt sechsmal durch den Tisch, bevor er bei 65 landet.

brhfl
quelle
6

Lua, 36 Bytes

Dies hat eine Weile gedauert, da VIELE der Standard - Lua - Funktionen von den Regeln entfernt wurden math , string.char, string.match, pairs, auch next)

Dies nutzt die Tatsache, dass Lua eine globale hat _VERSIONLua 5.1 Zeichen , das normalerweise mit "Lua" beginnt (z. B. oder ähnlich für andere Versionen). Sofern dies nicht auf einem Nicht-Mainstream-Interpreter ausgeführt wird, ist das dritte Zeichen ein "a".

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

Das {...}[3]ist, die Ergebnisse zu gruppieren, finddie auch die Indizes enthalten, bei denen es übereinstimmt, und dann das dritte Element zurückzugeben, das das übereinstimmende Zeichen ist (das a).

PiGuy
quelle
1
print(({type{}:find".(.)"})[3]) 31 Bytes
Egor Skriptunoff
6

Haskell, 10 Bytes

Als Funktion (oder vielmehr als Aussage, da keine Eingabe erforderlich ist)

f=pred 'B'

macht den Trick. Probieren Sie es auf Ideone. Ein vollständiges Programm ist nicht möglich, da dieses ein enthalten müsste main.

Laikoni
quelle
Ich denke nicht, dass das gültig ist. Die Aufgabe erfordert "Drucken" oder "Anzeigen" A. Ihre Funktionen geben es einfach zurück und das verknüpfte Programm zeigt an, über putCharwelche Verwendung es verwendet wird u.
Nimi
Sie haben Recht, aber die Regeln wurden aktualisiert und jetzt scheint es in Ordnung zu sein, von einer Funktion zurückzukehren.
Laikoni
Nein, die Regeln sagen immer noch printund / oder display.
nimi
2
Dennis fragte explizit, ob es in Ordnung sei, von einer Funktion zurückzukehren, anstatt zu drucken, und OP antwortete mit Ja, aber der später aktualisierte Wortlaut der Frage spiegelt dies immer noch nicht wider. Ich denke, wir müssen noch auf eine weitere Klärung warten.
Laikoni
1
Das OP hat bestätigt, Adass gedruckt / angezeigt und nicht zurückgeschickt werden soll.
nimi
5

dc, 8 7 Bytes

-1B danke an Dennis

88 23-P

Drücke 88, drücke 23, subtrahiere und lasse 65. Drucke den oberen Teil des Stapels (65) als ASCII-Zeichenkette, ohne nachfolgende Newline.

Bearbeiten:

Dies sind einige der anderen Möglichkeiten, die ich mir ausgedacht habe. Es wurde im Grunde genommen ein Spiel, bei dem "die Zahlen 65 und 97 nur mit [238B-F]und ohne Zusatz erzeugt werden". Ironischerweise finde ich die längsten am interessantesten.

_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
quelle