O objetivo deste code-golf é criar um código que permita ao usuário inserir uma string ASCII (contém apenas caracteres ASCII imprimíveis ), e seu programa gera a variante em minúscula dessa string.
Importante: você NÃO tem permissão para usar uma função interna que converta a string (ou apenas um caractere) em minúsculas (como ToLower()
no .NET, strtolower()
no PHP, ...)! Você tem permissão para usar todas as outras funções internas, no entanto.
Outra observação importante: A sequência de entrada não contém apenas caracteres maiúsculos. A sequência de entrada é uma mistura de caracteres maiúsculos, minúsculos, números e outros caracteres imprimíveis ASCII .
Boa sorte!
code-golf
printable-ascii
ProgramFOX
fonte
fonte
s/./\L\0/g
.\L
é construído em?Respostas:
Shell - 10
Tradução da solução Perl de @ Gowtham usando
/bin/tr
.Exemplo de execução:
fonte
-p
bandeira conta como um). Eu concordo, porém, o seu parece que ele merece mais ser aceito ..Python 2.7 - 30 (com abuso de regras terrível e sem desculpas)
Como uma edição anônima apontou, você pode fazer isso em
2726 no Python 3 :Estou flagrantemente abusando das regras aqui, mas ...
Isso pega as cordas e as cobre em maiúsculas . Em seguida, em uma chamada de método não relacionada, ele reverte as letras maiúsculas e minúsculas - para que todas as letras minúsculas se tornem maiúsculas ... e troque as letras maiúsculas para minúsculas .
fonte
Perl -
1110 caracteres.y///
é o mesmo quetr///
!Em ação:
fonte
-p
opção é contada como 1.-
ep
:)-e
(perl -e
->perl -pe
), 3 se você assumir um script (perl
->perl -p
).Befunge-98-
26 22 2119Baseia-se no fato de que
(c-39)/26
é1
apenas para códigos de caracteres de caracteres ASCII maiúsculos (assumindo divisão inteira). Para cada caracterec
, imprimac + (((c-39)/26)==1)*' '
.Sessão de amostra:
fonte
Python 3, 58
fonte
map(ord,input())
funciona.map
aplica uma função (neste casoord
) a uma interable e retorna uma iterável. É como uma forma mais curta de(ord(x) for x in input())
.for c in input():print([c,(chr(ord(c)+32))]['@'<c<'['],end='')
. Tentei alguns com omap(ord,input())
truque, mas perdi a multiplicação do valor verdade por 32 e o adicionei ao truque do código de caractere. Muito agradável.Ruby, 18 caracteres
Nada realmente interessante.
(executado no IRB)
Apenas por diversão: uma versão confusa:
Execute assim:
Saída
fonte
J - 30
J é lido da direita para a esquerda, portanto, para dividir isso:
1!:1]1
&.(a.&i.)
1=I.
.]+32* ...
Obviamente, essa implementação específica considera apenas o ASCII; mas a abordagem poderia ser estendida para pelo menos o plano multilíngue básico em Unicode.
fonte
'@Z'(]+32*1=I.)&.(a.&i.)1!:1]1
should do it)u:(a.i.x)+32*1='@Z'I.x=.1!:1]1
, o que corresponde ao seu tamanho, mas é muito menos interessante (pois não usa 'under'). Falando nisso, eu não sabia sobre diádicoI.
, então obrigado por usá-lo. :-)(32(23)b.])&.(3&u:)
, should be 5 bytes shorter.C
64 63 5955 charsfonte
int
and,c>=0
. They're not necessary here.~(c=getchar())
2.c-64u<27
Golfscript - 17
Program:
Explanation:
{}%
maps the code inside to every character in string...
copies the top of the stack (the character) twice.64>
1 if character code is greater than 64, else 0.\
swaps the two items on the stack (gets the second copy of the letter, and stores the result of64>
in position two).91<
checks to see if character code is less than 91. Similar to step 3.*
multiplies the results from steps 3 and 5 together. Only equal to 1, if both steps were true.32*
multiplies the result of step 6 with 32. Will be 32 if step 6 was 1, else 0.+
add the result (either 32 or 0) onto the character code.Example output:
fonte
Perl: 24 characters
Sample run:
fonte
chr ord
? I'm pretty sure you won't learn anything in reading my answer ;-)-p
command line parameter, not a newline.Python (33)
If in doubt, use the shell.
Regrettably, this is still longer than Lego's solution.
fonte
tr
command (which does the right thing) on the path of the invoked shell, I suppose.DELPHI
fonte
JavaScript -
109104 (ES6: 95)Thanks to some for the corrected version.
The following works if the browser supports ES6 function expressions:
fonte
undefined
and thenc.charCodeAt()
fails because undefined don't havecharCodeAt
. A working example 105 characters:a=prompt();for(b=[i=0];c=a.charCodeAt(i);)b[i++]=String.fromCharCode(c|(c>64&&c<91)*32);alert(b.join(''))
and
instead of a logical one... nice!L=s=>[String.fromCharCode(c.charCodeAt()|(c>"@"&c<"[")*32)for(c of s)].join('')
. Uso:L('SoMeTeXt')
for..of
qualquer maneira.Perl 18
Algo como:
e
Para @FireFly :
não.
Mais genérico: 18 caracteres de qualquer maneira:
Isso não vai mudar nada no estado:
Todos funcionam bem, mas a vantagem de mudar
|
(ou) por^
(xor) é que a mesma sintaxe poderia ser usado paratoLower
,toUpper
ouswapCase
:toUpper:
e swapCase (18 + 1 = 19 caracteres) :
fonte
-p
desculpe @manatwork #@
em backtick e[\]^_
para{|}~DEL
? E é aí que reside a parte complicada ..$&
tem que combinar[A-Z]
.javascript 80
(76 se você remover
"X"
)com
prompt
ealert
- 92violino
Obrigado a @FireFly @some @ C5H8NNaO4 e @minitech
fonte
replace
comfunction($){return ...}
, não? A propósito, o primeiro parâmetro da função de substituição é a string correspondente, para que você possa descartar os parênteses no regex.prompt
ealert
para E / S em JS./g
sinalizador para que isso funcione corretamente.R
71 caracteres:
83 caracteres:
fonte
86
caracteres - as novas linhas contam como 2 caracteres. ( string-functions.com/length.aspx );
para que elas não contem apenas um caractere. Pode ser escrito:a=as.integer(charToRaw(scan(,"")));b=a%in%(65:90);a[b]=a[b]+32;rawToChar(as.raw(a))
Q, 18
.....
fonte
Q (16)
.......
fonte
PHP (42)
Execute a partir da linha de comando:
-R
e as aspas simples não são contadas.fonte
str_ireplace
faz pesquisa sem distinção entre maiúsculas e minúsculas, o que está esticando as regras, se não as violando.PowerShell:
696564Eu tentei meia dúzia de maneiras de fazer o Replace funcionar da maneira que eu queria, sem usar a
[regex]::Replace
sintaxe longa , mas não tive sorte. Se alguém tiver uma idéia do que pode funcionar, sugira.Código de golfe:
Explicação:
(read-host)
obtém a entrada do usuário.[regex]::Replace(
...)
diz ao PowerShell para usar a correspondência de RegEx para executar operações de substituição em uma seqüência de caracteres."[A-Z]"
corresponde a todas as letras maiúsculas.{
...}
diz ao PowerShell para usar um script para determinar o valor de substituição.[char]"$args"
pega a correspondência atual e a digita como um caractere ASCII.32+
converte o caractere em um número inteiro, representando o código ASCII e aumenta o valor em 32 - o que corresponderia ao código ASCII da letra minúscula correspondente.[char](
...)
pega o valor resultante e o converte novamente em um caractere ASCII.Demonstração do original:
(Versão atual testada - captura de tela ainda não publicada.)
fonte
[regex]::Replace
, mas você pode salvar 4 caracteres mudando[int]
para+
{[char](32+[char]"$args")}
, o que elimina a necessidade de explicitamente convertido para int e raspa mais um personagemk2, 15 bytes
eu sou super atrasado para este, mas achei legal assim mesmo.
Além disso:
Pitão, 10 bytes
Realmente não conta, porque o Pyth foi criado depois que este foi publicado. Ainda legal.
fonte
05AB1E , 3 bytes
Porta da resposta do usuário @ user8777 Python 3 .
Experimente online.
Explicação:
Mas sem nenhum recurso de alteração de caso:
05AB1E ,
1211 bytes-1 byte graças a @Emigna .
Experimente online.
Explicação:
fonte
ÇIS.u32*+çJ
salva um byte na sua versão de 12 bytes..u32*+
abordagem da seguinte maneira:εÇy.u32*+ç]J
mas, infelizmente,ç
agrupa os personagens em uma lista, então um adicionalJ
ou `foi necessário após oç
..Javascript, 105
Na verdade, não havia nenhum formulário de saída especificado, portanto, execute-o no console Sim, o JavaScript é realmente detalhado com o código <-> string
fonte
c.charCodeAt()
- o padrão é0
se um índice for omitido. Além disso, as quebras no '@' Eu acredito que (ele é "minúscula" a crase)Ruby: 66
fonte
C # - 108
Cerca de 70 apenas para o corpo do método.
Adicione 5 caracteres para incluir um LF / CR na saída:
Uma versão do LINQ seria mais curta:
(103) .. exceto que requer
using System.Linq;
(total: 121).fonte
Haskell - 58
fonte
Python 3-70
Atualizado para as alterações do OP.
Eu sou um novato em Python, então qualquer crítica é bem-vinda.
fonte
Perl, 9 + 1 (para sinalizador -p) = 10
\L
foi especificamente questionado e permitido, porque, mesmo sendo incorporado, não é uma função.fonte
Powershell,
5349 bytes-4 bytes graças a @AdmBorkBork
Script de teste:
Saída:
fonte
¯\_(ツ)_/¯
Código de máquina 8086, 14 bytes
Montado:
Listagem desmontada:
Implementado como uma
MACRO
(essencialmente uma função). String de entradaSI
, comprimento emCX
. String de saída emDI
.Saída do programa de teste do PC DOS:
Baixe e teste o programa de exemplo TOLOW.COM .
fonte
AC 3C 41
, etc. Adicionarei o código hexadecimal montado no topo para maior clareza. codegolf.meta.stackexchange.com/a/12340/84624