O objetivo aqui é simplesmente reverter uma string, com um toque:
mantenha a capitalização nos mesmos lugares.
Exemplo de entrada 1: Hello, Midnightas
Exemplo de saída 1:SathginDim ,olleh
Exemplo de entrada 2: .Q
Exemplo 2 de saída:q.
Regras :
- Saída para STDOUT, entrada de STDIN
- O vencedor será escolhido no dia 13 de julho no horário GMT + 3 12:00 (uma semana)
- A entrada pode consistir apenas em símbolos ASCII, facilitando para programas que não usam nenhuma codificação que contenha caracteres não ASCII.
- Qualquer pontuação que termina em uma posição em que havia uma letra maiúscula deve ser ignorada.
Respostas:
TCC - 4 bytes
Experimente online!
Explicação:
fonte
tcc.lua
anterior ao lançamento do desafio? Como você adicionou recentemente comandos para resolver três outros desafios, presumo que não. Se sua resposta exigir uma versão do idioma que pós-desafio, você deve rotulá-la como não concorrente no cabeçalho. Eu removerei meu voto negativo quando você adicionar o rótulo ou fornecer uma prova de que seu código funcionou em uma versão anterior.Python, 71 bytes
Try it online
-3 bytes de Ruud, mais a inspiração para mais 2.
-4 bytes a mais de FryAmTheEggman
fonte
lambda s:''.join([z.lower(),z.upper()][c.isupper()]for c,z in zip(s,s[::-1]))
é três bytes mais curto(z*2).title()[c.isupper()-1]
Deveria trabalhar.~c.isupper()
vez dec.isupper()-1
Python 2, 73 bytes
Como as regras especificam, a entrada é ascii:
Todo o crédito é para @Mego, mas eu não tinha a reputação de comentar sua resposta.
fonte
Perl, 31 + 2 (
-lp
) = 33 bytesEsta solução é do @Ton Hospel (13 bytes mais curto que o meu).
Mas você precisará
l
ep
liga. Para executá-lo:fonte
-a
divisão automática, acho que poderia ter usado isso muitas vezes no passado! Eu preciso me lembrar disso! Eu acho que você pode salvar outro byte usando emmap...,...
vez demap{...}...
como você fez$F
no início! :)perl -lpe 's%.%(lc$>$&?u:l)."c chop"%eeg
-a
está implícito por-F
-a
(e-n
) estar implícito-F
, li isso há algum tempo no perlrun, tentei, mas não funcionou; mas tentei novamente agora e funciona bem, então acho que fiz algo errado naquela época. Obrigado.Pitão,
1311109 bytesObrigado a @FryAmTheEggman por me lembrar
V
e @LeakyNun por outro byte.Experimente online! agora no celular, atualizando o link daqui a pouco
fonte
srV_Qm!rId0
é 11, mas eu acho que pode ser possível reduzir o referido mapa ...d
e você salvou um byte.srV_Qm!/G
deve salvar um bytePython, 66 bytes
Repete-se pelos índices
i
, levando o caracteres[~i]
pelas costas e o caso des[i]
frente. Ser capital é verificado como estando na faixa contígua@ABC...XYZ[
. Crédito para FryAmTheEggman do(_*2).title()
truque.fonte
Retina ,
756765 bytesA contagem de bytes assume a codificação ISO 8859-1.
Experimente online! (A primeira linha permite um conjunto de testes com vários casos de teste separados por avanço de linha.)
fonte
JavaScript (ES6),
9583 bytesEditar: salvou 12 bytes enormes graças a @ edc65.
fonte
r=
é desnecessário.)Pyke,
11109 bytesExperimente aqui!
fonte
05AB1E ,
19161513 bytesGraças a Emigna por salvar 3 bytes!
Provavelmente vai ser derrotado por Jelly ...
Usa a codificação CP-1252 . Experimente online! .
fonte
S.l_v¹lRNèyiu}?
é 1 byte menorÂuvy¹Nè.lilë}?
é 14. Apenas feliz que eu possa ajudá-lo pela primeira vez :)Ruvy¹Nè.lil}?
na realidade. Eu não usei a bifurcação e esqueci de remover o resto. Então 13.MATL , 13 bytes
Experimente online!
fonte
J , 30 bytes
Não suporta não ASCII
fonte
Braquilog , 28 bytes
Explicação
Predicado principal:
Predicado 1:
fonte
TSQL, 175 bytes
Golfe:
Ungolfed
Violino
fonte
Na verdade, 25 bytes
Experimente online!
Explicação:
fonte
Haskell,
83807571 bytesA maneira mais direta que eu conseguia pensar.
fonte
(#)
,k
pode ser reescrita em estilo free-ponto:k=reverse>>=zipWith(#)
, que salva um par de bytes :)b
comof a|isUpper a=toUpper|1>0=toLower
, embora isso conflite com a melhoria de Flonk.f
xnor e reescrever o Flonkk
parazipWith f<*>reverse
.s
?k=
.PowerShell,
154,152,99, 86 bytesObrigado, @TimmyD, por me salvar 47 bytes (também guardei outros 6)
Obrigado ao @TessellatingHeckler por salvar 13 bytes adicionais.
Mais recentes:
Original:
Formatação normal:
Mais recente (parece melhor como duas linhas na minha opinião):
Explicação:
Original:
O primeiro pôster aqui foi motivado porque raramente vejo o PowerShell,
mas comTodas as sugestões apreciadas.154152 bytes neste aqui ... posso ver o porquê!Aprendi que devo mudar completamente minha maneira de pensar para jogar golfe no código e é divertido!
fonte
.tostring()
aspas por e usando manipulação de número inteiro ASCII em vez de regex. Tente o seguinte, para 105 bytes -param($a)-join($a[$a.length..0]|%{if(($x=$a[$i++])-le90-and$x-ge65){"$_".ToUpper()}else{"$_".ToLower()}})
.param($a)-join($a[$a.length..0]|%{if(65..90-contains$a[$i++]){"$_".ToUpper()}else{"$_".ToLower()}})
X-inY
é menor do queY-containsX
, e você pode mudar o seuif
para o operador falso ternário para obter 86 bytes -param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
Dyalog APL , 12 bytes
819⌶
é a função de dobrar estojof←
porque seu nome é longo, atribuímos a f⊢≠f
Booleano em que o texto difere do texto em minúsculasf¨⍨
use isso (1 significa maiúsculas, 0 significa minúsculas) para dobrar cada letra ...⌽
... do texto invertidoManipula não ASCII de acordo com as regras do Unicode Consortium.
fonte
CJam, 22 bytes
Teste aqui.
fonte
Raquete, 146 bytes
A raquete é ruim nessa coisa toda de "jogar golfe".
Encolher os ombros Como sempre, qualquer ajuda para encurtar isso seria muito apreciada.
fonte
Jolf, 21 bytes
Experimente aqui!
Explicação
fonte
(d)is function
... Sacrifique a ortografia por uma questão de golfe!Perl 6 , 29 bytes
fonte
C #,
8685 bytesAC # lambda onde a entrada e a saída são uma sequência. Você pode experimentá-lo no .NetFiddle .
Eu estou lutando para entender por que eu não posso conseguir converterchar.ToLower(c)
parac+32
. Espero consertar!12 bytes salvos graças a @PeterTaylor (
c|32
para adicionar 32 ao valor asciic
ec&~32
ao subtrair 32). O resultado seria 72 bytes (mas pode falhar em caracteres não alfabéticos).fonte
c|32
vez dec+32
, mas não funcionará com caracteres não-alfa.PHP, 128 bytes
Posso tentar otimizar ainda mais isso, mas vou deixar como está por enquanto.
fonte
Oitava,
5150 bytes@(s)merge(isupper(s),b=flip(toupper(s)),tolower(b))
fonte
VIM, 46 bytes
Seriam três bytes
g~G
se não precisássemos ler de stdin ou escrever para stdout, mas tudo bem ...Para testar isso, execute
Este é o meu primeiro envio aqui, não tenho certeza se esse tipo de envio é aceitável.
fonte
:se ri<cr>C<C-r>"
mas então precisará descobrir como colocar as letras certas em maiúsculas.Javascript (usando biblioteca externa) (224 bytes)
Isenção de responsabilidade: Usando uma biblioteca que escrevi para trazer o LINQ do C # para Javascript
fonte
Sed, 113 + 1 = 114 bytes
Por quê? Porque é divertido usar a ferramenta errada para fazer as coisas: P
Uso: Execute
sed -rf file
, digite o texto e pressione Ctrl+ D(enviar EOF).Golfe:
Ungolfed:
fonte
Java 7,
221217180 bytesCargas de bytes salvos graças à abordagem do @LeakuNun .
Casos não testados e de teste:
Experimente aqui.
Saída:
fonte
char[]
.String a="";
e a alteraçãoo+=
para0[i]=
salvar bytes, mas o Java não possui um caractere.toUpperCase()
/.toLowerCase()
método e a conversão de char para String, usa o método superior / inferior e, em seguida, voltar ao char exigiria (muito) mais bytes. Mas fique à vontade para dividir o ideone vinculado e criar algo quechar[]
funcione em menos bytes.C
fonte