Di pustaka standar C, nama header diakhiri dengan .h
akhiran:
stdio.h
Dalam C ++, nama-nama header itu tersedia dalam bentuk alternatif, dengan c
awalan sebagai gantinya:
cstdio
Tulis fungsi yang mengubah bentuk pertama menjadi bentuk kedua. Anda dapat melakukan konversi di tempat, atau membiarkan string asli tetap utuh dan mengembalikan string baru. Apapun terasa alami dalam bahasa pilihan Anda.
Kode harus dikompilasi / ditafsirkan tanpa kesalahan. Peringatan kompiler dapat diterima.
Inilah solusi baseline C Anda. Ini memiliki 70 karakter dan menghasilkan peringatan tentang strlen
:
void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';}
Solusi terpendek (diukur dalam jumlah karakter) menang.
Pembaruan: Jika bahasa pilihan Anda tidak mendukung fungsi, seluruh program juga dapat diterima.
Pembaruan: Seperti yang disarankan oleh FUZxxl, berikut adalah daftar lengkap file header di pustaka standar C:
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
Secara khusus, tidak ada nama header dengan banyak titik di dalamnya.
sumber
Python: 19 karakter
sumber
CJam, 6 byte
Ini adalah program lengkap yang membaca string melalui STDIN
Penjelasan :
Cobalah online di sini
sumber
-2
sebagus ituW(
?Java 8 - 25 karakter
sumber
brainfuck -
2523 byteIni adalah keseluruhan program yang menerima masukan dari STDIN.
sumber
>
di awal.Haskell - 23 karakter
Haskell - 16 karakter, seperti yang disarankan oleh nimi
sumber
init.init
alih - alih mengambil semua hingga yang pertama.
menghemat beberapa byte.C, 38
Lihat di Ideone
s
adalah pointer ke string input, dano
merupakan tempat output harus ditulis.Saya menemukan cara untuk penyalahgunaan
snprintf
. String keluaran dengan mudah menjadi satu karakter lebih pendek dari input, dan panjang maksimum string yang ditulis olehsnprintf
adalah 1 kurang darin
argumen, sehingga memotong.h
. Catatan: teknik ini tidak akan berfungsi dengan implementasi Microsoft karena melakukan hal yang salah dan gagal untuk mengakhiri-null string.sumber
File Batch Windows 11
Parameter pertama yang diteruskan adalah% 1. Pengubah ~ n mengembalikan hanya nama file tanpa ekstensi.
Jika dapat diterima untuk mengulangi perintah yang diperluas ke layar juga, maka @ awal dapat dihapus.
sumber
TIS Node Type T21 Architecture - 85 byte
Jawaban ini hanya untuk bersenang-senang; bahasa muncul setelah tantangan ini ditulis dan karena itu saya tidak bisa menang dengannya. (Bukannya aku akan pergi.)
Oke, saya bersenang-senang dengan ini. Saya mungkin hanya harus memanggil bahasa "TIS-100", tetapi mengapa memecah karakter? : D
TIS-100 adalah gim tentang memprogram komputer dengan arsitektur yang benar-benar unik dan aneh. Saya menulis teka-teki khusus - untuk tantangan ini, yang memungkinkan saya untuk mengambil input dan memeriksa output terhadap "string" yang dikenal benar. Sayangnya, tidak ada cara untuk menangani string atau karakter, sehingga program ini hanya menggunakan nilai ASCII dari setiap karakter untuk input dan output.
Jika Anda ingin melihatnya dalam aksi, Anda dapat menggunakan emulator ini , atau perhatikan saya menjalankannya di gim yang sebenarnya di sini . Perhatikan bahwa dalam video, baris terakhir dari simpul pertama adalah
D:MOV UP NIL
. Setelah menyelesaikan videonya, saya menyadari bahwa saya bisa memainkannyaD:ADD UP
. Secara fungsional tidak ada perbedaan, karena nilai ACC segera ditimpa pula.Ini adalah string yang saya gunakan untuk jumlah byte saya:
Itulah teks dari setiap node yang tidak kosong, dipisahkan oleh baris baru (secara efektif menambahkan 1 byte untuk setiap node yang digunakan di luar yang pertama, mencerminkan aturan kami tentang kode dalam beberapa file).
sumber
Dyalog APL (8 karakter)
Solusi ini persis sama dengan solusi J yang saya kirimkan tetapi menggunakan satu karakter lebih sedikit karena
↓
menjadi satu karakter kurang dari}.
.sumber
J (9 karakter)
|y
adalah besarnya dariy
(juga disebut nilai absolut)x }. y
menjatuhkan|x
item dariy
; barang dijatuhkan dari depan jikax
positif, dari ujung jikax
negatif.x , y
menambahkanx
dany
.'c' , _2 }. y
apakah transformasi yang Anda inginkan; dalam notasi diam-diam ini dapat dinyatakan sebagai'c' , _2 }. ]
.sumber
Burung unta 0.6.0 , 8 karakter
)
adalah operator "right uncons". Ketika diterapkan ke string, itu berubah, misalnya,`foo`
menjadi`fo` `o`
.;
digunakan untuk menghapus karakter tambahan, dan ini dilakukan lagi.Kemudian,
"c
didorong. Ini hanya singkatan untuk`c`
.\+
menukar dua elemen tumpukan teratas dan menggabungkannya.sumber
piet (
9x11 = 998X11 = 88)percobaan lain (2x37 = 74)
Sulit membuatnya jauh lebih kecil karena perlu menghasilkan 99 ('c') dan 46 ('.'), Dan itu membutuhkan ruang di piet.
sumber
/dev/null
kode sumber Anda.F # -
39373131 - Karena typeinference dalam F # rocks!
37
39
sumber
gema, 6
( Gema adalah bahasa makro yang tidak jelas.)
sumber
Bash, 18
Keluaran:
sumber
GNU sed -r, 14
sed tidak benar-benar memiliki konsep fungsi, jadi di sini adalah program sed lengkap sebagai gantinya:
Keluaran
The
-r
telah dimasukkan dalam skor sebagai salah satu karakter tambahan.sumber
s/\(.*\)\.h/c\1/
malah.-r
diteruskan ke sed. Seperti kode-golf biasa saya perlu menghitung itu sebagai poin tambahan.-r
bukan opsi standar dan tidak tersedia di luar GNU sed. Anda mungkin ingin mengubah nama bahasa menjadi GNU untuk mencerminkan hal itu.\.h
dapat disingkat menjadi..
Pendahuluan , 31 karakter
Karena pengiriman program lengkap tampaknya dapat diterima, berikut adalah program yang membaca header gaya C dari STDIN dan mencetak header gaya C ++ ke STDOUT:
Ini membutuhkan juru bahasa yang memenuhi standar yang mencetak hasil sebagai kode karakter. Jika Anda menggunakan juru bahasa Python, Anda harus mengaturnya
NUMERIC_OUTPUT = False
.Ini juga mensyaratkan bahwa tidak ada trailing newline di STDIN.
Penjelasan
Di Prelude semua baris dieksekusi secara paralel, satu kolom sekaligus. Setiap baris memiliki tumpukan sendiri, diinisialisasi ke jumlah
0
s yang tak terbatas .Ini adalah yang terpendek yang dapat saya lakukan untuk mendapatkan
99
tumpukan teratas (kode karakterc
). Pertama saya menjumlahkan18
di tumpukan atas dan mendorong9
ke tumpukan bawah. Bagian bawah kemudian menghitung mundur0
dalam satu lingkaran, sedangkan tumpukan atas menambah lebih banyak9
s. Ini menambahkan hingga99
pada tumpukan atas, dan tumpukan bawah dibiarkan dengan0
s lagi. Perhatikan bahwa semua+9+
adalah bagian dari loop, jadi sebenarnya ada dua operasi tambahan per iterasi, tapi itu bukan masalah, berkat persediaan infinite0
di bawahnya.Sekarang
(?)
membaca STDIN, satu karakter pada satu waktu dan mendorong ke tumpukan atas. Loop berakhir pada akhir input, ketika?
menekan nol.###
menghilangkan nol itu,h
dan.
. Sekarang loop berikutnya muncul angka dari tumpukan atas sambil menyalinnya ke tumpukan bawah. Ini pada dasarnya membalikkan tumpukan. Perhatikan bahwa tanda kurung buka dan tutup ada di baris yang berbeda - ini bukan masalah, karena posisi vertikal)
tidak relevan di Prelude, tetapi saya menghemat satu byte di baris pertama.Terakhir,
(!)
cetak semua karakter hingga tumpukan kosong.sumber
Pyth, 7 karakter
Penjelasan:
Coba ini:
pada Compiler / Executor Pyth online
Jika program lengkap diizinkan:
Pyth, 6 karakter
sumber
PPb
sebagai gantinya<b_2
C ++ 14, 41 karakter
Terinspirasi oleh jawaban lain ini . Saya membuatnya menjadi jawaban yang terpisah karena di sini saya menggunakan fitur yang baru di c ++ 14, lambda generik .
Lihat beraksi di sini .
sumber
T-SQL - 58 karakter
Jalankan sebagai EXEC Q (string Anda di sini)
sumber
Perl - 20 karakter
Perhatikan bagaimana
c
sebuah kata bareword dan karenanya membutuhkan kekuranganuse strict
. Ini harus digunakan sebagai ekspresi, bukan pernyataan.sumber
Marbelous, 24
Membawa input melalui STDIN, output ke STDOUT.
Ini bekerja dengan memeriksa setiap byte dengan
.
(0x46
). Karena0x46
tidak dapat masuk ke dalam satu digit basis-36, kami mengurangi 35 (Z
) sebelum membandingkan, dan menambahkannya kembali sebelum menghasilkan.Setiap marmer diduplikasi oleh
3W
( duplikator tiga arah, tetapi sisi kiri dibuang dari sisi papan). Marmer yang dikirim ke bawah mengambil byte berikutnya dari STDIN. Marmer di sebelah kanan dicentang ke.
, lalu dikeluarkan, atau dikirim ke!!
, yang mengakhiri program.Program dimulai dengan melewati
c
(0x63
) melalui, yang akan di-output ke STDOUT.Cobalah online di sini. Perpustakaan harus diaktifkan, papan silinder harus dinonaktifkan.
sumber
C, 64
Agak lebih pendek dari referensi c:
Mungkin lebih banyak bermain golf dengan ini.
C, 48 (libc hack)
Halaman
strcpy
manual secara eksplisit menyatakan "String tidak boleh tumpang tindih". Namun saya menemukan bahwa libc yang saya gunakan tampaknya dikodekan dengan aman untuk menangani semua ini dengan benar. Ini adalah GNU C Library (Ubuntu EGLIBC 2.19-0ubuntu6.4) di Ubuntu 14.04.sumber
-std=c89
. codegolf.stackexchange.com/a/2204/11259int
.JavaScript (ES6) 20
Tidak percaya ES6 masih hilang
sumber
Perl, 15 (14 + -p)
sumber
mk, 34 karakter
mk (1) adalah pengganti Plan 9 untuk make. Hanya untuk bersenang-senang, mkfile ini mengubah nama header C menjadi nama header C ++:
Ada satu tab sebelum
:
danecho
. Gunakan seperti ini:sumber
CoffeeScript - 16
sumber
TI-BASIC 83/84, 15
sumber
R, 33
Fungsi ini menggunakan ekspresi reguler.
Contoh penggunaan:
sumber