Na biblioteca padrão C, os nomes dos cabeçalhos terminam com um .h
sufixo:
stdio.h
No C ++, esses nomes de cabeçalho estão disponíveis em um formato alternativo, com um c
prefixo:
cstdio
Escreva uma função que converta o primeiro formulário no segundo. Você pode fazer a conversão no local ou deixar a string original intacta e retornar uma nova string. O que quer que pareça natural no seu idioma de escolha.
O código deve ser compilado / interpretado sem erros. Avisos do compilador são aceitáveis.
Aqui está sua solução C de linha de base. Possui 70 caracteres e gera um aviso sobre strlen
:
void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';}
A solução mais curta (medida em número de caracteres) vence.
Atualização: se o seu idioma de escolha não suportar funções, programas inteiros também serão aceitáveis.
Atualização: Conforme sugerido por FUZxxl, aqui está uma lista completa dos arquivos de cabeçalho na biblioteca padrão 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
Especificamente, não há nomes de cabeçalho com vários pontos.
fonte
Python: 19 caracteres
fonte
CJam, 6 bytes
Este é um programa completo que lê a string via STDIN
Explicação :
Experimente online aqui
fonte
-2
tão bom quantoW(
?Java 8 - 25 caracteres
fonte
brainfuck -
2523 bytesEste é um programa completo que recebe informações do STDIN.
fonte
>
no início.Haskell - 23 caracteres
Haskell - 16 caracteres, conforme sugerido por nimi
fonte
init.init
vez de colocar todos no primeiro,.
economiza alguns bytes.C, 38
Veja em Ideone
s
é um ponteiro para a sequência de entrada eo
é para onde a saída deve ser gravada.Eu encontrei uma maneira de abusar
snprintf
. A string de saída passa a ser convenientemente um caractere menor que a entrada, e o comprimento máximo da string escrita porsnprintf
é 1 menor que on
argumento, portanto, corta o.h
. Nota: esta técnica não funcionará com a implementação da Microsoft porque faz a coisa errada e falha ao finalizar a string com nulo.fonte
Arquivo em lote do Windows 11
O primeiro parâmetro transmitido é% 1. O modificador ~ n retorna apenas o nome do arquivo sem extensão.
Se for aceitável repetir o comando expandido na tela também, o @ inicial pode ser removido.
fonte
Arquitetura do tipo T21 do nó TIS - 85 bytes
Esta resposta é apenas por diversão; a linguagem surgiu depois que esse desafio foi escrito e, portanto, não posso vencer com ele. (Não que eu fosse.)
Ok, eu me diverti um pouco com este. Eu provavelmente deveria chamar a linguagem "TIS-100", mas por que quebrar caracteres? : D
O TIS-100 é um jogo sobre a programação de um computador com uma arquitetura totalmente única e bizarra. Eu escrevi um quebra-cabeça personalizado para esse desafio, o que me permite receber e verificar a saída em relação a uma "string" correta e conhecida. Infelizmente, não há como lidar com seqüências de caracteres ou caracteres, portanto este programa simplesmente usa o valor ASCII de cada caractere para entrada e saída.
Se você gostaria de vê-lo em ação, você pode usar este emulador , ou apenas assista-me a executá-lo no jogo real aqui . Observe que no vídeo, a linha final do primeiro nó é
D:MOV UP NIL
. Depois de terminar o vídeo, percebi que podia jogar até o fimD:ADD UP
. Funcionalmente, não há diferença, porque o valor do ACC é imediatamente substituído de qualquer maneira.Esta é a string que usei para minha contagem de bytes:
Esse é o texto de cada nó não vazio, separado por novas linhas (adicionando efetivamente 1 byte para cada nó usado além do primeiro, espelhando nossa regra sobre o código em vários arquivos).
fonte
Dyalog APL (8 caracteres)
Essa solução é exatamente a mesma que a solução J que enviei, mas usa um caractere a menos por
↓
ser um caractere a menos que}.
.fonte
J (9 caracteres)
|y
é a magnitude dey
(também chamado valor absoluto)x }. y
descarta|x
itens dey
; os itens são descartados da frente, sex
positivo, e do final, sex
negativo.x , y
acrescentax
ey
.'c' , _2 }. y
faz a transformação que você deseja; em notação tácita, isso pode ser expresso como'c' , _2 }. ]
.fonte
Avestruz 0.6.0 , 8 caracteres
)
é o operador "uncons direito". Quando aplicado a uma string, ele se transforma, por exemplo,`foo`
em`fo` `o`
.;
é usado para destacar o caractere extra, e isso é feito novamente.Então,
"c
é empurrado. Isto é simplesmente uma abreviação de`c`
.\+
troca os dois principais elementos da pilha e os concatena.fonte
piet (
9x11 = 998X11 = 88)outra tentativa (2x37 = 74)
Difícil torná-lo muito menor, pois precisa gerar um 99 ('c') e um 46 ('.'), E isso exige espaço na pena.
fonte
/dev/null
como seu código-fonte.F # -
39.37.3131 - Porque a digitação em rochas F #!
37.
39.
fonte
gema, 6
( Gema é uma linguagem macro obscura.)
fonte
Bash, 18
Saída:
fonte
GNU sed -r, 14
sed realmente não tem nenhum conceito de funções, então aqui está um programa completo de sed:
Saída
O
-r
item foi incluído na partitura como um caractere extra.fonte
s/\(.*\)\.h/c\1/
.-r
é passado para o sed. Conforme o código de golfe habitual, preciso contar isso como um ponto extra.-r
não é uma opção padrão e não está disponível fora do GNU sed. Você pode alterar o nome do idioma para GNU sed para refletir isso.\.h
pode ser encurtado para..
Prelúdio , 31 caracteres
Como os envios completos de programas são aparentemente aceitáveis, eis um programa que lê o cabeçalho no estilo C do STDIN e imprime o cabeçalho no estilo C ++ no STDOUT:
Isso requer um intérprete compatível com o padrão, que imprime a saída como códigos de caracteres. Se você estiver usando o interpretador Python, precisará definir
NUMERIC_OUTPUT = False
.Também exige que não haja nenhuma nova linha no STDIN.
Explicação
No Prelude, todas as linhas são executadas em paralelo, uma coluna por vez. Cada linha tem sua própria pilha, inicializada com uma quantidade infinita de
0
s.Este é o mais curto que eu pude para colocar um
99
na pilha superior (o código de caractere dec
). Primeiro, adiciono18
a pilha superior e empurro a9
para a pilha inferior. A parte inferior é contada0
em um loop, enquanto a pilha superior adiciona mais9
s up. Isso se acumula99
na pilha superior e a pilha inferior é deixada com0
s novamente. Observe que tudo+9+
faz parte do loop, portanto, na verdade, existem duas operações de adição por iteração, mas isso não é um problema, graças ao suprimento infinito de0
s abaixo.Agora
(?)
lê STDIN, um caractere de cada vez e empurra para a pilha superior. O loop termina no final da entrada, quando o valor?
é zero.###
se livrar desse zero, oeh
o.
. Agora, o próximo loop exibe números da pilha superior enquanto os copia para a pilha inferior. Isso basicamente reverte a pilha. Observe que os parênteses de abertura e fechamento estão em linhas diferentes - isso não é um problema, porque a posição vertical do)
é irrelevante no Prelude, mas economiza um byte na primeira linha.Por fim,
(!)
imprime todos os caracteres até que a pilha esteja vazia.fonte
Pitão, 7 caracteres
Explicação:
Tente o seguinte:
no Pyth Compiler / Executor online
Se programas completos fossem permitidos:
Pitão, 6 caracteres
fonte
PPb
em vez de<b_2
C ++ 14, 41 caracteres
Inspirado por essa outra resposta. Fiz uma resposta separada, porque aqui uso um recurso novo no c ++ 14, lambda genérico .
Veja em ação aqui .
fonte
T-SQL - 58 caracteres
Execute como EXEC Q (sua string aqui)
fonte
Perl - 20 caracteres
Observe como
c
é uma palavra de barra e, como tal, requer uma falta deuse strict
. Isso deve ser usado como uma expressão, não como uma declaração.fonte
Marbelous, 24
Leva a entrada através de STDIN, sai para STDOUT.
Isso funciona verificando cada byte com
.
(0x46
). Como0x46
não cabe em um único dígito de base 36, subtraímos 35 (Z
) antes da comparação e o adicionamos novamente antes da saída.Cada mármore é duplicado por
3W
( duplicador de três vias, mas o lado esquerdo é descartado do lado do tabuleiro). O mármore enviado para baixo busca o próximo byte de STDIN. O mármore à direita é marcado para.
, então, enviado ou enviado para!!
, que finaliza o programa.O programa começa passando
c
(0x63
), que será enviado para STDOUT.Experimente online aqui. As bibliotecas devem estar ativadas, as placas cilíndricas devem estar desativadas.
fonte
C, 64
Um pouco menor que a referência c:
Provavelmente mais golfe a ser feito com isso.
C, 48 (libc hack)
A página de
strcpy
manual declara explicitamente "As cadeias não podem se sobrepor". No entanto, descobri que a libc que estou usando parece ser codificada com segurança para lidar com isso corretamente da mesma forma. Esta é a Biblioteca GNU C (Ubuntu EGLIBC 2.19-0ubuntu6.4) no Ubuntu 14.04.fonte
-std=c89
. codegolf.stackexchange.com/a/2204/11259int
.JavaScript (ES6) 20
Não acredito que o ES6 ainda estava faltando
fonte
Perl, 15 (14 + -p)
fonte
mk, 34 caracteres
mk (1) é o substituto do plano 9 para o make. Apenas por diversão, esse mkfile converte nomes de cabeçalho C em nomes de cabeçalho C ++:
Há uma única guia antes
:
eecho
. Use assim:fonte
CoffeeScript - 16
fonte
TI-BASIC 83/84, 15
fonte
R, 33
Esta função usa expressões regulares.
Exemplo de uso:
fonte