O desafio é simples: imprima o último, o meio e o primeiro caracteres do código-fonte do seu programa, nessa ordem.
O caractere do meio é definido da seguinte forma, assumindo um comprimento de fonte de n
caracteres e indexação 1:
- Se
n
for par, imprima o caractere -thn/2
en/2 + 1
-thth. (abcdef == cd
) - Se
n
for ímpar, imprima o(n-1)/2 + 1
quinto caractere. (abcde == c
)
Regras
- Se não houver entrada, imprima o último, o meio e o primeiro caracteres no seu código-fonte, no formulário
[last][middle][first]
. Isso terá de 3 a 4 caracteres. - A saída não deve conter nenhum espaço em branco à direita. No entanto, se o espaço em branco for um primeiro, meio ou último caractere, ele deverá ser impresso como tal.
- O código fonte deve ter
n >= 3
caracteres. - O código deve consistir em
>= 3
caracteres únicos. - As brechas padrão são proibidas.
- Isso é código-golfe , então a solução mais curta em caracteres vence.
Amostras
# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1
121
para muitos idiomas.-
para negação e imprima implicitamente com um\n1-
avanço de linha, isso significa três bytes. Até agora, minha pesquisa foi infrutífera.Respostas:
JavaScript,
97 bytesSaídas:
NaN
Experimente online!
fonte
Grama , 17 bytes
Experimente online!
-2 bytes graças a jimmy23013.
Saídas
www
. Grass ignora todos os caracteres além dew
,W
ev
. Os doisV
s são assim ignorados; eles estão lá para garantir que o caractere do meio seja umw
- não tenho idéia de como produzirv
ouW
no Grass ... eu poderia ter usado outro caractere em vez deV
, masV
preserva a estética do código.fonte
x
s (ou qualquer outro personagem que não seja Grass, que Grass ignora) para mover umw
para o lugar correto.wWWwww wWWwWWWww
V
s porque acho mais bonito. ;-)brainfuck , 17 bytes
Experimente online!
Com os imprimíveis, isso pode ser reduzido para 7 bytes:
␀..␀_.␀
fonte
U
como uma instrução. Funcionalmente, o código é-[>+<---]>.
, portanto, a saída esperada seria.--
, a qual ele não gera.U
esse intérprete os ignora alegremente. Todas as respostas com comentários ou espaços múltiplos (ou qualquer outra coisa que não importe necessariamente para o idioma) não devem ser contadas?U-[>+<-UU--]>...U
? Em sua forma atual, o código mostra apenas umÿ-.ÿ..ÿ
? É imprimível e curto.Linguagem de programação de Shakespeare , 119 bytes
Experimente online!
Imprime três espaços. Sem espaços de impressão:
Linguagem de programação de Shakespeare , 227 bytes
Experimente online!
Como minha resposta INTERCAL sem nova linha, isso é construído para tornar o último caractere do programa o mesmo que o caractere do meio (embora neste caso também não seja o primeiro), cancelando o golfe na segunda metade do código até que eles Combine. (Não tenho certeza se eu poderia ter construído 46 em menos bytes ou não, ou se poderia ter jogado golfe em outras partes da primeira metade mais.)
fonte
!
Python 2 ,
1311 bytesPara deixar o espaço em branco claro:
Experimente online!
-2 bytes, graças ao wastl!
fonte
RProgN 2 , 3 bytes
Experimente online!
Eu acho que isso é válido?
fonte
1
e0
são empurrados para uma pilha, então um pop-print implícito no final do programa? Sim, é válido[quine]
desafios, antes que as regras do quine fossem alteradas.tac
Linux.05AB1E ,
75 bytesSaídas
R \n
.-2 bytes, inspirando-se na resposta em lotes do @Neil , portanto, faça um voto positivo também!
Experimente online.
Alternativa de 5 bytes por @Grimy :
Saídas
12\n
.Experimente online.
Resposta inicial de 7 bytes :
Saídas
?«'
.Experimente online.
Explicação:
fonte
PHP , 9 bytes
Experimente online!
fonte
<?
tag, você pode usar uma das soluções triviais de 4 bytes, como1231
- qualquer coisa sem um caractere especial como primeiro e último, quaisquer outros 2 caracteres no meio. Sua resposta pode ser a resposta PHP mais curta do código real .Gelatina , 5 bytes
Experimente online!
A saída possui dois caracteres distintos, mas o código também possui um terceiro.
Versão trivial de 4 bytes:
fonte
121
Também não é uma resposta trivial válida?Excel, 9 bytes
Tantos parênteses.
Nota: O caractere do meio retornado pode realmente ser qualquer caractere, pois é o meio do código.
fonte
"
. Bem feito!Ruby , 6 bytes
Experimente online!
Isso gera
" "
mais uma nova linha. O código termina com a"
, os dois caracteres do meio sãoe
"
, e começa com uma nova linha.fonte
Idioma de lote do DOS / Windows, 9 bytes
fonte
Ruby ,
119 bytesExperimente online!
fonte
Lote, 9 caracteres
O caractere do meio e o último são ambos
h
e, em seguida,echo
imprime uma nova linha por padrão, que é o primeiro caractere do script.fonte
PowerShell, 3 bytes
Funciona apenas no Microsoft Windows.
Infelizmente, a saída é de 8 bytes em UTF-16. Mas a pergunta diz que os caracteres são gerados, e não os bytes. Indiscutivelmente, o UTF-16 é apenas uma das maneiras suportadas de representar os caracteres no PowerShell. Eles não são interpretados de maneira diferente de um arquivo ASCII.
fonte
0x0a != 0x0d != 0x31
:)Bash (
1511 caracteres)que imprime
|rev
fonte
echo<space>e<space><space>e
será impressa eme<space>e<newline>
vez dee<space>e
, então eu a rejeitei. A nova linha faz parte da saída, e é por isso que GrzegorzOledzki está usando a-n
opção. Experimenteecho -n e-e
online vs Experimenteecho e e
online . E, novamente, por favor, não edite a resposta de outras pessoas. Se você tem um golfe a sugerir, deixe um comentário.printf pfp
, mas apenas porque precisamos de dois espaços devido a essa definição de caractere do meio, caso contrário, seria 10 ...ArnoldC , 61 bytes
Experimente online!
Resposta trivial em ArnoldC. O 31º byte é o espaço imediatamente antes da string literal.
fonte
Subcarga ,
9 bytes7 bytesObrigado a Khuldraeseth na'Barya pela solução aprimorada!
Pelo que sei, agora isso não pode ser melhorado, já que:
Experimente online!
fonte
Linguagem de programação de Shakespeare ,
163153 bytes-10 bytes graças a Jo King.
Experimente online!
Minha primeira resposta SPL! Saídas
!BB
.Há outra resposta SPL por String não relacionada; nessa resposta, eles produzem apenas espaços em 119 bytes ou caracteres não-espaço em 227 bytes. Este aparece no meio e também gera caracteres não espaciais.
Dois truques são usados aqui:
!
.
!
.
B
, portanto, o título da peça éB
e eu preciso que o segundo "grande" seja "Grande", que funciona porque o SPL não diferencia maiúsculas de minúsculas.Como eu precisava daquela capital
B
e de um ponto de exclamação no final, decidi fazer o Ajax gritar cada vez mais alto pela cena.fonte
CJam , 7 bytes
Experimente online!
fonte
0 1 0
é mais curto e também possui três caracteres distintos (não quero repassar minha abordagem Jelly: P).Befunge-93 , 7 bytes
Experimente online!
Explicação
Saída é
0 .
fonte
APL (Dyalog Unicode) ,
54 bytesProgramas completos.
Solução de mandrilamento da J.Sallé:
Imprime esse número. Uma solução muito mais interessante:
Experimente online!
O APL ignora os zeros à esquerda, portanto, esse formato é simplesmente escalado para 10 × 10 × = 100.
fonte
Chef , 447 bytes
Experimente online!
Uma apresentação séria,
196177 bytesgraças a A__
Experimente online!
fonte
Python 3,
19 bytes13 bytesA função de impressão acrescenta uma nova linha por padrão, para que o código comece com uma nova linha. O último caractere do código é um ")", então é impresso primeiro. Para tornar o número de caracteres irregulares, é inserido um espaço antes do argumento da função de impressão. Por favor, desculpe a imprudência do código.
Saídas:
)(\n
Experimente online.
fonte
print
e um espaço em brancoprint
depois")("
. Saídas:)(
com uma nova linha no final.end
parâmetro padrão da função de impressão, não contam.Espaço em branco ,
3129 bytes-2 bytes graças a @RobinRyder .
Letras
S
(espaço),T
(tabulação) eN
(nova linha) adicionadas apenas como destaque.[..._some_action]
adicionado apenas como explicação.Experimente online (apenas com espaços brutos, tabulações e novas linhas).
Contém um no-op
a
(pode ser qualquer caractere que não seja um espaço em branco) para tornar o comprimento ímpar. Ele é adicionado antes da primeira metade do programa, para que o caractere do meio também seja um espaço, pois o caractere do meio se tornaria uma nova linha se estivesse na segunda metade do programa. Todos os caracteres que não são de espaço em branco são ignorados nos programas de espaço em branco.fonte
Haskell , 17 bytes
Experimente online!
fonte
MathGolf ,
54 bytes-1 byte usando a solução trivial apresentada por @ErikTheOutgolfer em sua resposta Jelly , que funciona para qualquer idioma com saída implícita sem rastrear nova linha.
Experimente online.
Resposta original de 5 bytes :
Saídas
x ù
.Experimente online.
Explicação:
fonte
Flak cerebral , 11 bytes
Experimente online!
Explicação
Precisamos colocar 3 coisas na pilha. A maneira mais rápida de fazer isso é colocar 3 1s (ou zeros) na pilha. Agora, já que
(ponto 1 do código) não faz nada no Brain-Flak, podemos adicioná-los ao programa nos primeiros e últimos lugares do meio. Agora isso parece um pouco barato, então aqui estão mais duas respostas que são menos baratas na minha opinião.
Imprime chaves, 31 bytes
Experimente online!
Essa resposta imprime chaves entre os caracteres, para que os caracteres impressos sejam realmente relevantes para o código; ele possui um caractere de preenchimento para tornar o comprimento ímpar; portanto, precisamos imprimir apenas 1 caractere do meio.
Contém apenas chaves, 32 bytes
Experimente online!
Este é um programa apenas de chaves, tanto a fonte quanto (conseqüentemente) a saída é composta inteiramente de chaves (o personagem Brain-Flak realmente se importa).
fonte
AsciiDots - 9 bytes
Resultado:
.$.
O código começa com a
.
, termina com a.
, e o caractere do meio é a$
. A aspas simples no meio define o modo de impressão de pontos para simplesmente ler caracteres diretamente no fluxo de saída.É possível que isso possa ser menor, mas estou começando a duvidar disso. Para imprimir três caracteres, a aspas simples deve ser usada, pois as aspas duplas exigiriam o fim da string para a saída. No entanto, isso significa que as aspas simples devem: a) ser seguidas por três caracteres eb) não pode ser o caractere central. Para reduzir isso para sete bytes, eu estava pensando em tentar reutilizar o início do ponto como um dos caracteres impressos (como o programa quine do AsciiDot). No entanto, descobri que a menor sequência disponível para impressão era
($'
que precisaria imprimir quatro caracteres no espaço de três ou três caracteres no espaço de quatro. Eu também tentei alguns métodos alternativos hacky, como tentar imprimir o valor do ponto (que é 0) como um dos caracteres. Embora possa haver algum sistema que funcione, eu os achei bastante complexos e grandes. Portanto, acho que a descrição acima é a menor solução. (Atualizarei se encontrar algo menor)fonte
/'$'-.[newline]\.
Experimente online!MATLAB, 13
15bytesSaídas
) d
Versão anterior (15 bytes, saída menos rigorosa):
Saídas
'''
fonte
ans =\n '''\n
. Normalmente, isso não é um problema, mas esse desafio parece estabelecer um padrão mais rigoroso. Mas então eu posso estar interpretando o desafio errado.