Imprima o último, o meio e o primeiro caracteres do seu código


60

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 ncaracteres e indexação 1:

  • Se nfor par, imprima o caractere -th n/2e n/2 + 1-thth. ( abcdef == cd)
  • Se nfor ímpar, imprima o (n-1)/2 + 1quinto 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 >= 3caracteres.
  • O código deve consistir em >= 3caracteres únicos.
  • As brechas padrão são proibidas.
  • Isso é , 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

Proposta de Desafio


6
Talvez seja apenas eu, mas "O código deve consistir em> = 3 caracteres únicos". sugere que todos os caracteres do programa sejam exclusivos, enquanto você só precisa ter pelo menos três caracteres distintos.
Grzegorz Oledzki

4
@Belhenix Menos de três caracteres únicos permite soluções tão simples quanto 121para muitos idiomas.
Khuldraeseth na'Barya

2
Se alguém puder encontrar uma linguagem baseada em pilha que use -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.
Khuldraeseth na'Barya

3
O espaço em branco @Belhenix é certamente possível, pois possui caracteres válidos únicos suficientes (espaço, avanço de linha, guia).
bigyihsuan

2
Não é possível alterá-lo agora com 58 respostas, mas exigir "a primeira letra do código deve ser diferente da última letra do código" descartaria muitas respostas triviais, incluindo a principal resposta atual. Essa pode ter sido a intenção de "> = 3 caracteres únicos", mas esse requisito não é realmente muito difícil.
manassehkatz 10/07

Respostas:


171

JavaScript, 9 7 bytes

N=>a=-N

Saídas: NaN

Experimente online!


4
Muito esperto. Esse era o tato que eu estava tentando adotar, mas simplesmente não conseguia encontrar um idioma com uma saída de erro suficientemente curta.
ouflak 10/07

49
Esta é uma das melhores respostas Javascript que eu já vi aqui
Daniel

21

Grama , 17 bytes

wWWwwwVVwWWwWWWww

Experimente online!

-2 bytes graças a jimmy23013.

Saídas www. Grass ignora todos os caracteres além de w, We v. Os dois Vs são assim ignorados; eles estão lá para garantir que o caractere do meio seja um w- não tenho idéia de como produzir vou Wno Grass ... eu poderia ter usado outro caractere em vez de V, mas Vpreserva a estética do código.


11
" Felizmente, o personagem do meio acabou sendo aw e não av ou W - não tenho idéia de como exibir v ou W no Grass ... " xD Tentei fazer algo semelhante no Whitespace, tendo também apenas três caracteres (espaço, tab, nova linha), mas infelizmente não tive tanta sorte. Felizmente, posso simplesmente adicionar um monte de no-ops finais para corrigi-lo.
Kevin Cruijssen 9/07

@KevinCruijssen Se o personagem do meio fosse qualquer outra coisa, eu provavelmente adicionaria no meio um monte de xs (ou qualquer outro personagem que não seja Grass, que Grass ignora) para mover um wpara o lugar correto.
Robin Ryder

Ah, eu sou um idiota. Também posso inserir um caractere que não seja espaço em branco que o espaço em branco ignorará. ;) -2 bytes graças a você.
Kevin Cruijssen 9/07

11
17 bytes :wWWwww  wWWwWWWww
jimmy23013 10/07

@ jimmy23013 Obrigado! E obrigado por postar sua dica ; Eu precisava entender o que você fez! Mudei os espaços para Vs porque acho mais bonito. ;-)
Robin Ryder

17

brainfuck , 17 bytes

U-[>+<-UU--]>...U

Experimente online!

Com os imprimíveis, isso pode ser reduzido para 7 bytes: ␀..␀_.␀


11
Dentro das regras, mas o BF não usa Ucomo uma instrução. Funcionalmente, o código é -[>+<---]>., portanto, a saída esperada seria .--, a qual ele não gera.
bigyihsuan

16
@bigyihsuan, mas o código fonte ainda contém ose Uesse 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?
dzaima 9/07

11
Não deveria ser U-[>+<-UU--]>...U? Em sua forma atual, o código mostra apenas um
Helena

11
@Flater Sim, aqui eles são usados ​​para facilitar o desafio, mas esse não é o objetivo da tag code-golf ? Muitas respostas aqui, por si só, facilitam seu trabalho adicionando espaços em branco à esquerda / à direita e, em geral, no código-golfe aqui, qualquer coisa que segue as regras é permitida (e se eu tivesse que adivinhar, se havia uma regra que desaprovasse caracteres não utilizados (definindo qual seria objetivamente) já é praticamente impossível) significaria que o desafio ainda estaria pairando na pontuação 0 e provavelmente também seria fechado).
dzaima 11/07

2
Por que você simplesmente não usa ÿ-.ÿ..ÿ? É imprimível e curto.
Dorian

17

Linguagem de programação de Shakespeare , 119 bytes

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

Experimente online!

Imprime três espaços. Sem espaços de impressão:

Linguagem de programação de Shakespeare , 227 bytes

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

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.)


2
Eu não esperava que Shakespeare aparecesse para isso. Isso é ótimo
bigyihsuan

11
Gostaria de poder marcar com +1 apenas por aprender este idioma!
Stilez 10/07

11
mesmo nas mensagens de saída de depuração do intérprete on-line, o senso de humor dos autores mostra: Aviso na linha 2: 'mente' esperada
dlatikay

11
163 bytes para a segunda versão, terminando com um!
Robin Ryder

11
@UnrelatedString OK, obrigado! Feito .
Robin Ryder

14

Python 2 , 13 11 bytes


print' t' 

Para deixar o espaço em branco claro:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

Experimente online!

-2 bytes, graças ao wastl!


6
Ambos os espaços em branco à direita (nova linha), o que não é permitido. Alternativa Python 2: Experimente online!
wastl 9/07

Além disso, não acho que isso seja válido: o Python exige que você tenha uma nova linha vazia no final do seu código.
Geza Kerecsenyi 09/07

5
@GezaKerecsenyi Pelo que entendi, uma nova linha no final do código-fonte é apenas uma recomendação. Veja PEP8.
mypetlion 9/07

11
@GezaKerecsenyi Apenas uma diretriz
mbomb007

@wastl Obrigado! Fixo.
TFeld 9/07

11

RProgN 2 , 3 bytes

1
0

Experimente online!

Eu acho que isso é válido?


Eu estou supondo 1e 0são empurrados para uma pilha, então um pop-print implícito no final do programa? Sim, é válido
bigyihsuan

2
@bigyihsuan é o que eu estou adivinhando também; Eu não sei o idioma, eu só lembro que ele faz coisas assim: p
dzaima

@dzaima Haha, quando você posta uma resposta e nem sabe como ela funciona. xD Eu já vi o RProgN algumas vezes antes, com velhos [quine]desafios, antes que as regras do quine fossem alteradas.
Kevin Cruijssen 9/07

Eu acredito que isso é poliglota no tacLinux.
tsh 10/07

11

05AB1E , 7 5 bytes


„ RR

Saí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 :


12,1

Saídas 12\n.

Experimente online.

Resposta inicial de 7 bytes :

'?„«'«?

Saídas ?«'.

Experimente online.

Explicação:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline


8

PHP , 9 bytes

<?=";;<";

Experimente online!


3
Na verdade, como o PHP gera código como texto até a primeira <?tag, você pode usar uma das soluções triviais de 4 bytes, como 1231- 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 .
manassehkatz 10/07


7

Excel, 9 bytes

=("))=" )

Tantos parênteses.

Nota: O caractere do meio retornado pode realmente ser qualquer caractere, pois é o meio do código.


Parênteses! (Lâmpada) Fiquei preso com o último personagem que precisava ser ". Bem feito!
Wernisch

Obrigado! Era algo que eu estava tentando descobrir também, e então lembrei que os parênteses funcionariam.
william porter

6

Ruby , 6 bytes


p " "

Experimente online!

Isso gera " "mais uma nova linha. O código termina com a ", os dois caracteres do meio são e ", e começa com uma nova linha.


3
Gosto do seu crachá, acredito que seja um xor em escala de cinza no N². Gerei quase a mesma imagem para me ajudar com um problema do Project Euler Nim. O seu crachá tem uma história?
Damien

11
Boa pegada! Eu apenas gosto de "rabiscar" durante as reuniões, gerando imagens usando linhas únicas; xor foi um dos primeiros favoritos.
histocrat 9/07

6

Idioma de lote do DOS / Windows, 9 bytes

@echo @o@

Bem-vindo ao Code Golf & Coding Challenges Stack Exchange, +1 para um bom primeiro post!
A _


5

Lote, 9 caracteres


@echo hh

O caractere do meio e o último são ambos he, em seguida, echoimprime uma nova linha por padrão, que é o primeiro caractere do script.


5

PowerShell, 3 bytes

00000000: 0a0d 31                                  ..1

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.


é resposta inteligente
mazzy

11
permitido porque 0x0a != 0x0d != 0x31:)
bigyihsuan 10/07

5

Bash ( 15 11 caracteres)

echo -n e-e

que imprime

e-e
  • -4 caracteres por não usar |rev

11
@racraman Sua edição sugerida echo<space>e<space><space>eserá impressa em e<space>e<newline>vez de e<space>e, então eu a rejeitei. A nova linha faz parte da saída, e é por isso que GrzegorzOledzki está usando a -nopção. Experimente echo -n e-eonline vs Experimente echo e eonline . E, novamente, por favor, não edite a resposta de outras pessoas. Se você tem um golfe a sugerir, deixe um comentário.
Kevin Cruijssen 11/07

também 11 bytes com printf pfp, mas apenas porque precisamos de dois espaços devido a essa definição de caractere do meio, caso contrário, seria 10 ...
pLumo

5

ArnoldC , 61 bytes

IT'S SHOWTIME
TALK TO THE HAND "D I"
YOU HAVE BEEN TERMINATED

Experimente online!

Resposta trivial em ArnoldC. O 31º byte é o espaço imediatamente antes da string literal.


5

Subcarga , 9 bytes 7 bytes

Obrigado a Khuldraeseth na'Barya pela solução aprimorada!

W(SSW)S

Pelo que sei, agora isso não pode ser melhorado, já que:

  • O primeiro caractere deve ser um caractere não operacional, pois todas as outras instruções geram um erro devido à pilha estar vazia, com a exceção sendo um colchete de abertura. No entanto, não pode ser assim, já que não há como produzir um suporte de abertura por si próprio no Underload.
  • Você precisa usar pelo menos 5 caracteres para adicionar os 3 caracteres de saída à pilha.
  • Você precisa usar S para produzi-lo.

Experimente online!


Bem-vindo ao Code Golf SE! Você pode salvar alguns bytes pulando a cópia, assim .
Khuldraeseth na'Barya 10/07

5

Linguagem de programação de Shakespeare , 163 153 bytes

-10 bytes graças a Jo King.

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

Experimente online!

Minha primeira resposta SPL! Saídas !BB.

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:

  1. !.!25+1 1.
  2. A duplicação de 33 fornece 66, o ponto de código de B, portanto, o título da peça é Be 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 Be de um ponto de exclamação no final, decidi fazer o Ajax gritar cada vez mais alto pela cena.


4

CJam , 7 bytes

'@'' _@

Experimente online!


4
Com certeza 0 1 0é mais curto e também possui três caracteres distintos (não quero repassar minha abordagem Jelly: P).
Erik the Outgolfer

11
@EriktheOutgolfer Well though !. Mas isso é exatamente como a sua resposta, então vou deixar como está
Luis Mendo

2
Sim, é por isso que comentei, realmente não queria postar a mesma coisa duas vezes. (Hum ... essa pode ser a solução ideal para muitos idiomas.) De qualquer forma, o seu também pode ser aplicado em outros lugares!
Erik the Outgolfer

4

Befunge-93 , 7 bytes

.",  @0

Experimente online!

Explicação

Saída é 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output

4

APL (Dyalog Unicode) , 5 4 bytes

Programas completos.

Solução de mandrilamento da J.Sallé:

1231

Imprime esse número. Uma solução muito mais interessante:

010E1

Experimente online!

O APL ignora os zeros à esquerda, portanto, esse formato é simplesmente escalado para 10 × 10 × = 100.


4

Chef , 447 bytes

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

Experimente online!

Uma apresentação séria, 196 177 bytes

graças a A__

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

Experimente online!


Ver programas de Chef me faz pensar em qual é o mínimo necessário para isso.
bigyihsuan 11/07

@bigyihsuan see my edit
user24343

Você pode remover todos os "e" e fazer com que o programa ainda funcione .
A _

Eu criei um programa de trabalho. (177 bytes)
A _

4

Python 3, 19 bytes 13 bytes


print( ')(')

A 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.


11
Dependendo de como as regras funcionam, talvez eu tenha 13 bytes brincando com sua resposta: `print (") (")` Observe que há uma nova linha acima printe um espaço em branco printdepois ")(". Saídas: )( com uma nova linha no final.
Hoog

Obrigado, até 13 bytes! Como a pergunta se refere especificamente a espaços em branco, mas não a novas linhas, assumirei que as novas linhas à direita, como endparâmetro padrão da função de impressão, não contam.
jaaq 10/07

Isso imprime uma nova linha à direita, mas não é responsável por ela.
A _

Não tenho certeza se as novas linhas contam como espaços em branco, mas eu adicionei a segunda versão também de 13 bytes.
jaaq 16/07

11
Sim, as novas linhas contam como espaço em branco, assim como guias e espaços, entre outros
Jo King

4

Espaço em branco , 31 29 bytes

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

-2 bytes graças a @RobinRyder .

Letras S(espaço), T(tabulação) e N(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.




3

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).


3

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)


Bem-vindo ao Code Golf SE! Eu brinquei com isso por alguns minutos e cheguei à mesma conclusão que você. Bom primeiro post!
Khuldraeseth na'Barya 11/07

11
Alternativa 9 bytes - /'$'-.[newline]\.Experimente online!
Alion 13/07

3

MATLAB, 13 15 bytes

disp(  ') d')

Saídas ) d

Versão anterior (15 bytes, saída menos rigorosa):

'''';1;''''''''

Saídas '''


Eu vejo agora, agora se preocupa.
Wheat Wizard

Essa saída não está em branco?
Sanchises 14/07

@Sanchises nope, size (ans) == 3
Oct18 é dia de silêncio em SE 14/07

Sim, mas a saída real é 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.
Sanchises 14/07

@Sanchises hm, entendo. Eu posso entender mal o que o codegolf considera "output", então, sua saída parece ser literalmente a saída, formatada por MATLAB
outubro é dia de silêncio no dia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.