Code Golf Measurer © 2019
Hexdumps xxd
sehen ungefähr so aus:
00000000: 666f 6f20 6261 7220 7370 616d 2065 6767 foo bar spam egg
00000010: 730a s.
Ihre Aufgabe ist es, einen Hexdump in dieser Form in die Anzahl der verwendeten Bytes umzuwandeln.
Regeln:
- Übliche Schlupflöcher verboten.
- Dies ist Code-Golf , also gewinnt die kürzeste gültige Antwort in Bytes.
- Sie können die neue Zeile am Ende des Textes einfügen oder nicht (
0a
). Dies bedeutet0a
, dass die Ausgabe dieser Eingabe möglicherweise um eins reduziert wird , wenn der Hexdump in einer newline ( ) endet . - Eine leere Eingabe (buchstäblich nichts: leere Liste / Zeichenfolge / etc.) Muss 0 ausgeben.
- Die Eingabe kann in beliebiger Form erfolgen
- Die Eingabe erfolgt in gültigem ASCII-Format ohne Steuerzeichen
- Die Eingabe muss den gesamten Hexdump enthalten
Testfälle:
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865 Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a llo, world!.
gibt 28 oder 27 zurück
00000000: 0a .
gibt 1 oder 0 zurück
00000000: 6368 616c 6c65 6e67 650a challenge.
gibt 10 oder 9 zurück
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21 Hello, world!
gibt 13 zurück
gibt 0 zurück (Dies ist buchstäblich nichts: leere Liste / Zeichenfolge / etc.)
Erklärungen wären für Nicht-Standardsprachen nett.
code-golf
string
hexadecimal
gadzooks02
quelle
quelle
xxd
eine leere Zeichenkette eingegeben wird, gibt sie nichts aus.objdump
Zerlegungen odernasm
Auflistungen suche, um Antworten auf Maschinencodes zu erhalten.) Ich schätze, ich sollte das in der Sandbox posten ...Antworten:
Retina 0.8.2 , 8 Bytes
Probieren Sie es online! Erläuterung:
Löschen Sie die ersten 51 Zeichen jeder Zeile. (Zeilen können nur zwischen 52 und 67 Zeichen enthalten, dies entspricht also immer einmal pro Zeile.)
Zählen Sie die verbleibenden Nicht-Zeilenumbrüche.
7 Bytes, wenn leere Eingabe nicht unterstützt werden musste:
Probieren Sie es online! Erläuterung:
Löschen Sie die ersten 52 Zeichen jeder Zeile. (Zeilen können nur zwischen 52 und 67 Zeichen enthalten, dies entspricht also immer einmal pro Zeile.)
Zählen Sie 1 mehr als die Anzahl der verbleibenden Zeichen (einschließlich Zeilenumbrüche).
quelle
&`.{52}
.tcsh , 12 bytes
Probieren Sie es online!
quelle
V (vim) , 7 Bytes
Probieren Sie es online!
Erläuterung:
Hexdump:
quelle
Retina , 7 Bytes
Dies zählt die Gesamtzahl der einzeiligen Zeichenfolgen mit der Länge 52. Es könnte möglich sein, etwas Ähnliches zu tun
%52,`.
, aber ich habe keinen Weg gefunden, dies zu beheben.Probieren Sie es online!
quelle
&`.{52}
für Retina 0.8.2.APL (Dyalog Extended) , 18 Byte
Volles Programm. Fordert zur Eingabe einer Liste von Zeichenfolgen (dh von Zeichenlisten) auf.
Probieren Sie es online!
⎕
Prompt49↑¨
nimm die ersten 49 Zeichen von jedem(
…)¨
Wenden auf jede folgende stillschweigende Funktion an:⊢
das Argument⊆
zerhacken in Serien von Zeichen, die sind≠
unterscheidet sich vom Füllzeichen (Leerzeichen)1↓
Lass das erste "Wort" fallen∊
ϵ nlist (Abflachen)≢
übereinstimmen2÷⍨
durch zwei teilenquelle
Gelee , 5 Bytes
Ein monadischer Link, der eine Liste von Zeilen akzeptiert, die die Ganzzahl der Bytes ergeben.
Probieren Sie es online!
Wie?
quelle
C (gcc) ,
64-55BytesProbieren Sie es online!
9 Bytes dank YSC abgeschnitten!
Hier ist eine fragilere Version, die von der JavaScript-Lösung von Arnauld inspiriert ist und bei langen Eingaben wahrscheinlich fehlschlägt:
C (gcc) , 50 Bytes
Probieren Sie es online!
quelle
return r
aufl=r
main
), es möglich sein sollte, es mehrmals aufzurufen.r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}
: 55 Bytes :)while()
hat die gleiche Anzahl von Bytes wiefor(;;)
. Also;while()
ist ein Byte länger alsfor(;;)
.Python 3,
4846 BytesDie Eingabe wird als Zeichenfolge an die Funktion übergeben. Die Funktion erhöht die Länge der Eingabe (einschließlich der Zeilenumbrüche) und subtrahiert dann 52 für jede Zeile.
Probieren Sie es online aus
quelle
f=
kann das als `f =` in den Header verschoben werden, wobei nur das Lambda als Code übrig bleibt und zwei Bytes gespart werden: Probieren Sie es online aus!f=
ist eine Angewohnheit, die ich vom Python-Discord-Server aufgegriffen habe.Japt
-x
, 5 BytesEingabe als Array von Zeilen.
Versuch es
quelle
Perl 6 , 18 Bytes
Probieren Sie es online!
Anonym Welches Lambda auch immer, das eine Liste von Zeilen aufnimmt und die Summe der Anzahl der Zeichen zurückgibt, wobei für jede Zeile 51 subtrahiert werden
quelle
05AB1E ,
86 BytesProbieren Sie es online!
Eingabe als Liste von Zeichenfolgen.
quelle
MathGolf ,
76 Bytes (nicht konkurrierend)Es ist (vorerst) nicht konkurrierend, da es derzeit einen Fehler in MathGolf für Zeichenketten-Eingaben gibt, die Leerzeichen enthalten. Sie werden automatisch in eine Liste umgewandelt (durch Leerzeichen getrennt). Im TIO habe ich alle Leerzeichen durch ein ersetzt, um
B
zu zeigen, dass es wie beabsichtigt funktioniert.Eingabe als Liste von Zeichenfolgen.
-1 Byte durch Auffinden einer zu generierenden Methode
51
in 2 Bytes (siehe Verlauf für mehr als 10 Möglichkeiten, dies in 3 Bytes zu tun.)Probieren Sie es online aus.
Erläuterung:
quelle
IBM / Lotus Notes Formula Language, 53 Byte
Es gibt kein TIO für Formula. Hier sind Screenshots der Testfälle:
Die Formel befindet sich in dem berechneten Feld, das den Wert nach "Returns" liefert.
Erläuterung
Dies ist eine gute Demonstration, wie Formula eine Funktion rekursiv auf eine Liste anwendet, ohne eine Schleife zu benötigen. Die Formel befindet sich in einem berechneten Feld in derselben Form wie das bearbeitbare Eingabefeld "i".
@Left
und@Right
zulassen, dass ein Zeichenkettenbegrenzer oder eine Anzahl von Zeichen verwendet wird. Wir suchen also rechts:
und dann links vom ersten Vorkommen zweier Räume. Da Formula die neue Zeile als Listentrennzeichen ansieht, wird dies auf jede Zeile in der Eingabe angewendet.@Explode
ist Formulas Äquivalent zu einersplit
Funktion und verwendet standardmäßig Leerzeichen,
oder;
. Es wird wieder auf jede Zeile im Feld angewendet, aber dieses Mal werden die Ergebnisse in einer einzigen Liste zusammengefasst.@Length
wird dann auf jedes Mitglied der Liste angewendet. In jedem Fall dividieren wir den Rückgabewert durch 2.@Sum
die ganze Liste und das Ergebnis ausgeben.quelle
JavaScript (ES6), 34 Byte
Probieren Sie es online!
Kommentiert
quelle
Rot ,
81-55BytesProbieren Sie es online!
Übernimmt die Eingabe als Liste von Zeichenfolgen.
quelle
JavaScript,
3332 BytesProbieren Sie es online!
1 Byte dank Arnauld gespeichert.
quelle
Befunge-98 (FBBI) , 16 Bytes
Probieren Sie es online!
quelle
Stax , 5 Bytes
Führen Sie es aus und debuggen Sie es
quelle
Zsh , 36 Bytes
Mit den Standard-Flags von zsh:
Probieren Sie es online!
${(f)1}
$1
Teilt sich in Zeilenumbrüche und verwirft leere Zeilen. Das$[ arithmetic expansion ]
schützt vor dem leeren Koffer, wenn die Schlaufe nie untergeht$c
.Zsh , 28 Bytes
Mit
-o extendedglob
:Probieren Sie es online!
(f)
Teilen Sie Zeilenumbrüche auf,${ #?(#c52)}
entfernen Sie die führenden 52 Zeichen und(F)
fügen Sie Zeilenumbrüche hinzu, sodass die Zeichen nicht in der Liste, sondern in der Zeichenanzahl${# }
gezählt werden.quelle
asm2bf , 135 Bytes
Golf Version:
Kommentierte Version:
quelle