Sua missão, se você optar por aceitá-la, é decidir se uma determinada sequência de entrada é pesada em pontos ou em traço.
Uma string é muito pesada quando sua representação em morse contém mais pontos que traços. Por exemplo, a letra E é um único ponto, o que significa que possui muitos pontos.
Entrada
- A sequência de entrada conterá apenas caracteres no intervalo de
[a-z]
ou[A-Z]
. Você pode decidir se todas devem estar em maiúsculas ou minúsculas.AAA
está bem,aaa
está bem,aAa
não está. - A sequência de entrada sempre terá pelo menos 1 caractere.
- Você pode assumir que as seqüências de entrada nunca terão uma quantidade igual de pontos e traços.
Saída
Você deve retornar Truthy para entradas que contenham mais caracteres de ponto.
Você deve retornar o Falsy para entradas que contenham mais caracteres de traço.
Editar: permitirei um valor positivo para ponto e um valor negativo para traço também.
Casos de teste
| input | morse representation | result |
|------------------------------------------------|
| S | ... | Truthy |
| k | -.- | Falsy |
| HELLO | .... . .-.. .-.. --- | Truthy |
| code | -.-. --- -.. . | Falsy |
Referência
Isso é código-golfe . O menor código em bytes vence.
Respostas:
APL (Dyalog Extended) ,
24SBCSde15 bytes-9 graças a Ven
Função de prefixo tácito anônimo, tomando maiúsculas como argumento.
Experimente online!
⌂morse
convertido à lista de cordas Morse∘
, em seguida,∊
ε nlist (achatar)'.-'⍧
contar o número de pontos e traços em que>/
mais pontos do que traços? (lit. maior que redução)fonte
IBM PC DOS, montagem 8088,
5435 bytes-19 bytes usando o método da diferença
Desmontado:
Explicação
Implementado na sintaxe Intel / MASM como um MACRO (basicamente uma função), usando apenas instruções compatíveis com o 8088. Insira como sequência maiúscula (ou +2 bytes para permitir letras maiúsculas), o resultado da saída Truthy / Falsy é
SF == OF
(useJG
ouJL
para testar).Os valores da tabela de diferença de letras são armazenados como petiscos binários, portanto, leva apenas 13 bytes no total.
Original (54 bytes):
Explicação
Implementado na sintaxe Intel / MASM como um MACRO (basicamente uma função), usando apenas instruções compatíveis com o 8088. Entrada como string, saída Truthy / Falsy resulta em Carry Flag. A tabela de pontuação contém o número de traços e pontos por letra.
A entrada é maiúscula. Adicione 2 bytes para usar letras minúsculas ou mistas.
Exemplo de programa de teste (como executável COM independente do IBM PC DOS)
Saída de exemplo:
Baixe o programa de teste DD.COM
Ou Experimente Online! Não conheço um TIO online para direcionar o link para um executável do DOS, mas você pode usá-lo com apenas algumas etapas:
DD Hello
ouDD code
para o conteúdo do seu coraçãofonte
0000h
para a origem do AX: fysnet.net/yourhelp.htmXLAT
fazer exatamente o que se destina a fazer. Se você estava realmente otimizando a velocidade sobre o tamanho, desejaria fazer pesquisas no tamanho de WORD. Essa ainda é uma vitória de velocidade, mesmo no 8088 com seu barramento externo anêmico de 8 bits, porque você está dobrando a taxa de transferência sem aumentar o tamanho do código, exceto por umaXCHG
ou duas instruções.XLAT
), mesmo que sejam necessários 6 bytes para fazer uma mudança bit a bit para a direita em 4 lugares (dentro de aLOOP
).Java (JDK) ,
1311241108464 bytesCuriosamente, "ponto" é muito pesado e "traço" é muito pesado.
Aceita entrada em todas as maiúsculas como um
IntStream
(role para baixo para uma versão com uma realString
por 8 bytes extras). Tive muita ajuda para jogar este: graças aos dados expirados por jogar 20 bytes, a Neil por jogar 26 bytes, a Olivier Grégoire por jogar 18 bytes e a Kevin Cruijssen por jogar 2 bytes.Contém 26 caracteres não imprimíveis dentro das aspas duplas.
Experimente online!
Ungolfed:
Java (JDK) ,
1311241108472 bytesPara puristas; recebe entrada como a
String
. Agradecimentos aos dados expirados por jogar 20 bytes, a Neil por jogar 26 bytes e a Olivier Grégoire por jogar 10 bytes.Experimente online.
Ungolfed:
fonte
"35344527512513031462452313".charAt(a-65)-51
?Gelatina , 21 bytes
Experimente online!
Quão?
fonte
05AB1E ,
2221 bytesGuardou um byte graças a Kevin Cruijssen
Experimente online!
Explicação
é 35344527512513031462452313 compactado na base 255.
fonte
S
.usdgpsahsoaboutlopezgbidol
v = ord(c)*3%83%8
aboutlopez
. Procurei outras partidas com o mesmo multiplicador e módulo. (Portanto, não é absolutamente garantido que seja ótimo.)C # (compilador interativo do Visual C #) , 47 bytes
Usa a 'corda mágica' do Level River St. Certifique-se de votar também na solução deles!
Não é todo dia que o C # vence Ruby, Python, Javascript, C, Retina e Perl!
Experimente online!
fonte
Gelatina , 23 bytes
Experimente online!
fonte
C (gcc) ,
8482817975 bytesAssume todas as maiúsculas.
Experimente online!
fonte
Python 2 ,
737069 bytesExperimente online!
Apenas maiúsculas
-3 bytes, graças a Erik, o Outgolfer
Versão em maiúsculas e minúsculas:
Python 2 ,
7371 bytesExperimente online!
fonte
JavaScript (Node.js) ,
6968 bytesExperimente online!
fonte
Stax , 20 bytes
Execute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
Ruby , 64 bytes
Experimente online!
Usa uma string mágica de 13 bytes, 2 números
0..7
codificados em cada byte. Subtraia 3 para um intervalo-3..4
.O código ASCII para
A
(e tambémN
) o módulo 13 obtido é por coincidência, zero.fonte
Retina 0.8.2 , 51 bytes
Experimente online! O link inclui casos de teste. Aceita apenas maiúsculas (+6 bytes para maiúsculas e minúsculas). Roubando descaradamente a string de @ Arnauld, mas eu usaria o mesmo algoritmo de qualquer maneira. Explicação:
Altere cada letra pela diferença no número de pontos e traços, mais três, então
O=0
eH=7
.Represente a diferença como esse número de se
<
três>
. (Infelizmente, não posso usar pontos porque eles são especiais em regex.)Remova os pares correspondentes de
<
s e>
s.Verifique se ainda restam alguns pontos.
fonte
Bash + coreutils,
6460 bytesExperimente online!
Pega uma string em minúscula, gera zero para falsidade, diferente de zero para verdade
Explicação
Usa tr e sed para criar um programa dc com a aparência (por exemplo, entrada 'hello'):
fonte
<space>3
porz
(convenientemente, eu tenho 3 itens na pilha nesse ponto!) E outro byte substituindo as aspas em torno do meu programa sed por uma única barra invertida para escapar da&
R ,
74bytes de 70entrada deve estar em minúscula, retorna VERDADEIRO ou FALSO
Experimente online
fonte
TI-BASIC (TI-84), 111 bytes
Eu usei a mesma string para determinar o peso dos pontos que algumas das outras respostas.
O programa retornará truthy (
1
) se a sequência de entrada for muito pesada em pontos, falsy (0
) se não.A sequência de entrada deve estar em maiúsculas.
A entrada é armazenada em
Ans
. A saída é armazenadaAns
e impressa automaticamente quando o programa é concluído.Ungolfed:
Exemplo:
Explicação:
(O TI-BASIC não tem comentários, suponha que isso
;
indique um comentário)Nota: A contagem de bytes de um programa é avaliada usando o valor em [MEM] > [2] > [7] (124 bytes) e subtraindo o comprimento do nome do programa,
CDGF3
, (5 bytes) e 8 bytes extras usados para armazenando o programa:124 - 5 - 8 = 111 bytes
fonte
Perl 5
-pF
, 53 bytesExperimente online!
fonte
Fator , 66 bytes
Experimente online!
fonte
C ++ (compilado com o Visual Studio 2017)
se levarmos em conta o programa principal que existe para fins de teste, é mais.
esta é a variante "arrumada" não destruída
assume todas as letras minúsculas
fonte
22
deve ser2
.)"132...
e"112...
torne - se"353...
e51
é o valor ASCII de3
c (118 caracteres) retorna um valor positivo para excesso de pontos e valor negativo para excesso de traços
sem golfe
fonte
1& ( v > (c[I] - 65))
, que é a mesma quev > c[I] - 65
, que não consigo imaginar que seja falsa, para que pudéssemos remover essa coisa toda enquanto digitando 56 bytes noMathGolf , 22 bytes
Experimente online!
Usa o mesmo método que muitas outras respostas, onde
ⁿ∩┐↑rⁿ¼~<↔"
representa o número mágico35344527512513031462452313
.fonte
Python 2,
9086 bytestrabalhou no meu local com a biblioteca morse . -4 bytes. Obrigado pela dica @JoKing!
Além disso, é 1 byte a mais se estiver no Python 3.
Python 3, 87 bytes
Embora a questão assuma que o número de '.'s e' -'s não será igual; caso sejam iguais, esse código retornará True.
fonte
input
vez de,raw_input
se quiser ...input
avalia STDIN antes de passá-la para o programa