In der C-Standardbibliothek enden die Headernamen mit einem .h
Suffix:
stdio.h
In C ++ stehen diese Headernamen in einer alternativen Form mit einem c
Präfix zur Verfügung:
cstdio
Schreiben Sie eine Funktion, die das erste Formular in das zweite konvertiert. Sie können die Konvertierung direkt durchführen oder die ursprüngliche Zeichenfolge intakt lassen und eine neue Zeichenfolge zurückgeben. Was auch immer sich in der Sprache Ihrer Wahl natürlich anfühlt.
Der Code muss fehlerfrei übersetzt / interpretiert werden. Compiler-Warnungen sind akzeptabel.
Hier ist Ihre C-Basislösung. Es hat 70 Zeichen und erzeugt eine Warnung über strlen
:
void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';}
Die kürzeste Lösung (gemessen in Anzahl der Zeichen) gewinnt.
Update: Wenn Ihre Sprache keine Funktionen unterstützt, sind auch ganze Programme akzeptabel.
Update: Wie von FUZxxl vorgeschlagen, finden Sie hier eine vollständige Liste der Header-Dateien in der C-Standardbibliothek:
assert.h
ctype.h
errno.h
float.h
limits.h
locale.h
math.h
setjmp.h
signal.h
stdarg.h
stddef.h
stdio.h
stdlib.h
string.h
time.h
Insbesondere gibt es keine Kopfzeilennamen mit mehreren Punkten.
quelle
Python: 19 buchstaben
quelle
CJam, 6 Bytes
Dies ist ein vollständiges Programm, das den String über STDIN liest
Erklärung :
Probieren Sie es hier online aus
quelle
-2
so gut wieW(
?Java 8 - 25 Zeichen
quelle
Brainfuck -
2523 BytesDies ist ein ganzes Programm, das Eingaben von STDIN erhält.
quelle
>
am Anfang beheben .Haskell - 23 Zeichen
Haskell - 16 Zeichen, wie von Nimi vorgeschlagen
quelle
init.init
anstatt alle Zeichen bis zum ersten Zeichen zu.
belegen, werden einige Bytes gespart.C 38
Siehe auf Ideone
s
ist ein Zeiger auf die Eingabezeichenfolge,o
in die die Ausgabe geschrieben werden soll.Ich habe einen Weg gefunden, um zu missbrauchen
snprintf
. Die Ausgabezeichenfolge ist günstigerweise ein Zeichen kürzer als die Eingabe, und die maximale Länge der von geschriebenen Zeichenfolgesnprintf
ist 1 weniger als dasn
Argument, sodass die Zeichenfolge abgeschnitten wird.h
. Hinweis: Diese Technik funktioniert nicht mit der Implementierung von Microsoft, da sie das Falsche tut und die Zeichenfolge nicht mit Null terminiert.quelle
Windows-Batchdatei 11
Der erste übergebene Parameter ist% 1. Der Modifikator ~ n gibt nur den Dateinamen ohne Erweiterung zurück.
Wenn es akzeptabel ist, den erweiterten Befehl auch auf dem Bildschirm wiederzugeben, kann das anfängliche @ entfernt werden.
quelle
TIS-Knotentyp T21-Architektur - 85 Byte
Diese Antwort ist nur zum Spaß; Die Sprache ist entstanden, nachdem diese Herausforderung geschrieben wurde, und ich kann daher nicht damit gewinnen. (Nicht, dass ich gehen würde.)
Okay, ich hatte ein bisschen Spaß damit. Ich sollte wahrscheinlich nur die Sprache "TIS-100" nennen, aber warum soll ich das Zeichen unterbrechen? : D
TIS-100 ist ein Spiel zum Programmieren eines Computers mit einer völlig einzigartigen und bizarren Architektur. Ich habe ein spezielles Puzzle für diese Herausforderung geschrieben, mit dem ich die Eingabe und Ausgabe mit einer bekanntermaßen korrekten "Zeichenfolge" vergleichen kann. Leider gibt es keine Möglichkeit, Zeichenfolgen oder Zeichen zu verarbeiten. Daher verwendet dieses Programm einfach den ASCII-Wert jedes Zeichens für die Eingabe und Ausgabe.
Wenn Sie es in Aktion sehen möchten, können Sie diesen Emulator verwenden oder einfach zusehen, wie ich es im aktuellen Spiel hier ausführe . Beachten Sie, dass im Video die letzte Zeile des ersten Knotens ist
D:MOV UP NIL
. Nachdem ich das Video fertiggestellt hatte, wurde mir klar, dass ich das bis zum Golf spielen konnteD:ADD UP
. Funktionell gibt es keinen Unterschied, da der Wert von ACC sowieso sofort überschrieben wird.Dies ist die Zeichenfolge, die ich für meine Byteanzahl verwendet habe:
Dies ist der Text jedes nicht leeren Knotens, der durch Zeilenumbrüche getrennt ist (effektiv wird 1 Byte für jeden Knoten hinzugefügt, der nach dem ersten verwendet wird, was unsere Regel zum Code in mehreren Dateien widerspiegelt).
quelle
Dyalog APL (8 Zeichen)
Diese Lösung ist genau die gleiche wie die von mir eingereichte J-Lösung, verwendet jedoch ein Zeichen weniger, da
↓
es ein Zeichen weniger ist als}.
.quelle
J (9 Zeichen)
|y
ist die Größe vony
(auch Absolutwert genannt)x }. y
lässt|x
Gegenstände fallen vony
; Gegenstände werden von vorne fallen gelassen, wenn siex
positiv sind, und am Ende, wenn siex
negativ sind.x , y
hängt anx
undy
.'c' , _2 }. y
führt die Transformation durch, die du willst; in stillschweigender Notation kann dies ausgedrückt werden als'c' , _2 }. ]
.quelle
Strauß 0.6.0 , 8 Zeichen
)
ist der "richtige Uncon" -Operator. Wenn es auf eine Zeichenfolge angewendet wird, wird es beispielsweise`foo`
zu`fo` `o`
.;
wird verwendet, um das zusätzliche Zeichen zu entfernen, und dies wird erneut durchgeführt.Dann
"c
wird geschoben. Dies ist einfach eine Abkürzung für`c`
.\+
tauscht die beiden obersten Stapelelemente aus und verkettet sie.quelle
piet (
9x11 = 998 x 11 = 88)Noch ein Versuch (2x37 = 74)
Es ist schwer, es viel kleiner zu machen, da es eine 99 ('c') und eine 46 ('.') Erzeugen muss, und das braucht Platz in piet.
quelle
/dev/null
als Quellcode.F # -
39373131 - Weil Typinferenz in F # rockt!
37
39
quelle
Gema, 6
( Gema ist eine obskure Makrosprache.)
quelle
Bash, 18
Ausgabe:
quelle
GNU sed -r, 14
sed hat eigentlich kein Funktionskonzept, daher hier ein komplettes sed-Programm:
Ausgabe
Das
-r
wurde als ein zusätzlicher Charakter in die Partitur aufgenommen.quelle
s/\(.*\)\.h/c\1/
stattdessen sein.-r
, dass sed übergeben wird. Wie beim Code-Golf üblich, muss ich das als zusätzlichen Punkt zählen.-r
keine Standardoption ist und außerhalb von GNU sed nicht verfügbar ist. Möglicherweise möchten Sie den Namen der Sprache in GNU sed ändern, um dies widerzuspiegeln.\.h
kann verkürzt werden auf..
Vorspiel , 31 Zeichen
Da vollständige Programmübermittlungen anscheinend akzeptabel sind, ist hier ein Programm, das den C-Style-Header von STDIN liest und den C ++ - Style-Header an STDOUT ausgibt:
Dies erfordert einen standardkonformen Interpreter, der die Ausgabe als Zeichencode ausgibt. Wenn Sie den Python-Interpreter verwenden, müssen Sie festlegen
NUMERIC_OUTPUT = False
.Es ist auch erforderlich, dass in STDIN kein Zeilenumbruch erfolgt.
Erläuterung
Im Prelude werden alle Zeilen spaltenweise parallel ausgeführt. Jede Zeile hat einen eigenen Stapel, der auf unendlich viele
0
s initialisiert ist .Dies ist das kürzeste, das ich mir einfallen lassen könnte, um einen
99
auf den obersten Stapel (den Zeichencode vonc
) zu bekommen. Zuerst addiere ich18
den oberen Stapel und drücke einen9
auf den unteren Stapel. Der untere Teil zählt dann0
in einer Schleife abwärts , während der obere Stapel weitere9
s aufaddiert. Dies summiert sich zu99
dem oberen Stapel, und der untere Stapel wird wieder mit0
s belassen . Beachten Sie, dass all of+9+
Teil der Schleife ist, so dass es tatsächlich zwei Additionsoperationen pro Iteration gibt, aber das ist kein Problem, dank der unendlichen Zufuhr von0
s darunter.Nun
(?)
liest STDIN, ein Zeichen in einer Zeit und drückt auf den oberen Stapel. Die Schleife endet am Ende der Eingabe, wenn?
eine Null gedrückt wird.###
wird diese Null los, dieh
und die.
. In der nächsten Schleife werden die Zahlen vom oberen Stapel abgerufen, während sie in den unteren Stapel kopiert werden. Dies kehrt den Stapel im Wesentlichen um. Beachten Sie, dass sich die öffnenden und schließenden Klammern in verschiedenen Zeilen befinden - dies ist kein Problem, da die vertikale Position von)
in Prelude irrelevant ist, aber mir ein Byte in der ersten Zeile erspart.Zum
(!)
Schluss werden alle Zeichen gedruckt, bis der Stapel leer ist.quelle
Pyth, 7 Zeichen
Erläuterung:
Versuche dies:
auf dem Online Pyth Compiler / Executor
Wenn volle Programme erlaubt wären:
Pyth, 6 Zeichen
quelle
PPb
anstelle von verwenden<b_2
C ++ 14, 41 Zeichen
Inspiriert von dieser anderen Antwort. Ich habe es als separate Antwort angegeben, da ich hier eine Funktion verwende, die in c ++ 14 neu ist, generisches Lambda .
Sehen sie in Aktion hier .
quelle
T-SQL - 58 Zeichen
Führen Sie als EXEC Q (Ihre Zeichenfolge hier)
quelle
Perl - 20 Zeichen
Beachten Sie, wie
c
ist ein Bareword und als solches erfordert dies einen Mangel anuse strict
. Dies muss als Ausdruck und nicht als Anweisung verwendet werden.quelle
Marbelous, 24
Übernimmt die Eingabe über STDIN und gibt sie an STDOUT aus.
Dies funktioniert, indem jedes Byte mit
.
(0x46
) markiert wird . Da0x46
es nicht möglich ist, in eine einzelne Zahl zur Basis 36 zu passen, subtrahieren wirZ
vor dem Vergleich 35 ( ) und addieren sie vor der Ausgabe zurück.Jede Murmel wird von
3W
(Drei-Wege-Kopierer, aber die linke Seite wird von der Seite des Bretts abgeworfen) dupliziert. Der nach unten gesendete Marmor holt das nächste Byte von STDIN. Der Marmor auf der rechten Seite wird geprüft.
und dann entweder ausgegeben oder an gesendet!!
, wodurch das Programm beendet wird.Das Programm startet mit through
c
(0x63
), das an STDOUT ausgegeben wird.Probieren Sie es hier online aus. Bibliotheken müssen aktiviert sein, zylindrische Karten müssen deaktiviert sein.
quelle
C 64
Etwas kürzer als die c-Referenz:
Wahrscheinlich ist damit mehr Golf zu spielen.
C, 48 (libc hack)
In der
strcpy
Manpage heißt es explizit "Die Zeichenfolgen dürfen sich nicht überlappen". Allerdings habe ich festgestellt, dass die von mir verwendete libc anscheinend sicher codiert ist, um trotzdem korrekt damit umzugehen. Dies ist die GNU C-Bibliothek (Ubuntu EGLIBC 2.19-0ubuntu6.4) unter Ubuntu 14.04.quelle
-std=c89
. codegolf.stackexchange.com/a/2204/11259int
.JavaScript (ES6) 20
Ich kann nicht glauben, dass ES6 noch fehlte
quelle
Perl, 15 (14 + -p)
quelle
mk, 34 Zeichen
mk (1) ist der Plan 9-Ersatz für make. Aus Spaß konvertiert diese mk-Datei C-Headernamen in C ++ - Headernamen:
Vor
:
und gibt es einen einzelnen Tabecho
. Verwenden Sie wie folgt:quelle
CoffeeScript - 16
quelle
TI-BASIC 83/84, 15
quelle
R 33
Diese Funktion verwendet reguläre Ausdrücke.
Anwendungsbeispiel:
quelle