Mini-golfe de 9 buracos: Descrição
- 9 (na maior parte razoavelmente fácil) desafios de código de golfe de dificuldade variável
- Sanções por usar o mesmo idioma mais de uma vez
- Todos os desafios sobre um tema específico (este tema: Manipulação de texto)
- Entrada e saída podem ser razoáveis em qualquer lugar (por exemplo, STDIN e STDOUT, leitura / gravação em um arquivo, argumento de função e valor de retorno, etc.), mas NÃO devem ser codificadas no programa
- Fortemente inspirado no desafio de 9 buracos e no mecânico de texto
Buracos
Código-saco de golfe
Pegue duas cordas como entrada.
Gera a contagem de caracteres da primeira string, ignorando qualquer ocorrência de qualquer caractere na segunda string.
Exemplo:f("foobarbaz", "ao")
=>5
Um pré-texto para jogar golfe
Pegue duas cordas como entrada.
Saída a primeira string, com cada linha prefixada com a segunda.
Exemplo:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Guerra de abas vs espaços
Pegue uma strings
, um númeron
e um booleanob
(especificado como desejar) como entrada.
Seb
for verdade, faça a saídas
com todas as guias convertidas emn
espaços.
Senão, faça a saídas
com todos osn
espaços convertidos em guias.
Exemplo:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
significa espaço)Pilares de golfe
Pegue uma string
s
, um númeron
e outro númerom
como entrada.
Saídas
em colunas den
linhas cada em
caracteres por coluna.
Também possui preenchimento de um espaço entre as colunas.
Exemplo:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Cartas amigáveis
Pegue uma strings
e um númeron
como entrada.
Envie o grupo den
letras mais comum ems
.
Se houver um empate, produza um ou todos eles.
Exemplo:f("abcdeabcfghiabc", 3)
=>"abc"
Letras de
Pegue uma string como entrada.ovosmexidos no café da manhã
Produza a sequência com todas as suas palavras embaralhadas (ordem das letras aleatoriamente), exceto a primeira e a última letras.
Por uma questão de simplicidade, suponha que a entrada seja uma lista de "palavras" s, separadas por espaço (ou seja@$&_():;" foo bar
, em ,@$&_():;"
é considerada uma "palavra".)
Exemplo:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIIfy
Pegue uma string como entrada.
Se a sequência contiver apenas números e espaços, substitua os números pelos respectivos caracteres ASCII (removendo os espaços).
Senão, faça o inverso (caracteres para números).
Exemplo:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Exemplo 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Transformação mini-mini-markdown
Pegue uma string como entrada.
Produza a sequência convertida com minidistribuição, conforme usado nos comentários no Stack Exchange.
Esta é uma versão ainda mini-er: você só precisa lidar com**bold**
,*italics*
e`code`
.
Você não precisa lidar com aninhamentos inválidos, como**foo *bar** baz*
. Suponha também que quando você vê um delimitador (*
ou`
), isso sempre significa formatar (ou seja,te**st**ing
=>te<b>st</b>ing
efoo* bar *baz
=>foo<i> bar </i>baz
).
Exemplo:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Apenas os melhores personagens
Pegue uma sequências
, númeron
e sequênciar
como entrada.
Produza on
th caractere de cada palavra ems
. (Indexadas em 0, as palavras são separadas por espaço).
Se o comprimento da palavra for menor quen
, user
para essa palavra.
Exemplo:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Pontuação
Sua pontuação é a soma das contagens de caracteres dos seus programas. Para cada idioma repetido, multiplique por 110%. Por exemplo, se você tiver três soluções Ruby e a contagem total de caracteres de todas as suas soluções for 1000, sua pontuação será 1000 * 1,1 * 1,1 = 1210. Arredonde para baixo se você tiver uma pontuação não inteira.
Boa sorte!
code-challenge
string
multiple-holes
Maçaneta
fonte
fonte
_
não importa desde que eu especifiquei não incluí-lo. Eu editei para esclarecer alguns dos outros.**foo***bar**baz*
?Respostas:
Pontuação: 382 * 1,1 2 = 462
Idiomas propensos a mudar.
1. APL,
84Obrigado @marinus por cortar 4 caracteres.
Chamado com as strings como argumentos esquerdo e direito, por exemplo.
2. Ruby,
3531Obrigado @DoorknobofSnow por cortar 4 caracteres.
3. Python, 48
4. GolfScript, 20
Assume que os argumentos estão na pilha. Teste on-line
5. J, 50
Chamado com a string como argumento à esquerda e o número como à direita, por exemplo.
6. Ruby, 61
7. GolfScript,
393534Novamente, assume que o argumento está na pilha. Teste on-line
8. Perl, 98
9. Haskell, 36
fonte
f=->s,r{...}
) em vez de uma função. Mas eu me recuso a votar até que esteja completo: PPython - 697 × 1,1 9 ≈ 1644
Caramba, eu com certeza amo lambdas.
Nota : 3 e 5 foram copiados descaradamente da resposta da Volatility , pois não consegui encontrar uma alternativa melhor. Além disso, isso foi feito apenas por diversão .
EDIT : Obrigado ao Volatility pelas dicas.
fonte
int
, uma vez booleans são uma subclasse deles, e por 7.all([...])
pode ser encurtado parax.replace(' ','').isdigit()
a
.Pontuação 513 * 1,1 5 = 826
Levou uma surra pela penalidade no mesmo idioma. Resolvi a maioria delas em Ruby apenas para finalizá-las o mais rápido possível. Pode mudar alguns idiomas mais tarde. Adicionada uma pequena recapitulação / explicação em cada resposta.
1: Python (46)
Primeiro, resposta mais curta no Ruby 2.0 (30) que oferece mais penalidade e maior pontuação geral:
2: Ruby 1.9+ (37)
Retorna cada linha de
s
prefixo comt
:3: Ruby 1.9+ (48)
Retorna
s
com guias substituídas porn
espaços ou vice-versa, dependendo deb
:4: Ruby 1.9+ (95)
Alguém atira em mim.
5: Ruby 1.9+ (58)
Retorna a execução de
n
caracteres mais comum ems
:6: J (47)
Embaralha o texto de alguma forma; Vergonhosamente roubados descaradamente de marinus :
7: Ruby (57 + 1)
Imprime a entrada ASCIIfied ou de-ASCIIfied. Corra com o
-p
interruptor.8: Sed (87)
Imprime a entrada convertida de (mini) remarcação para HTML:
9 Ruby 1.9+ (37)
Retorna uma sequência dos
n
caracteres th de cada primeira palavra ems
, our
:fonte
<b>test** **test2</b>
para**test** **test2**
?**foo *bar* baz**
?-
operador de código ruby funciona com enumerador?Trabalho em progresso
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5)
6
7. Befunge 98 - 9
8)
9
fonte
for(char c:b.toCharArray())
ereplace(c+"","");
ereturn s.length();
(ou algo parecido) fazê-lo funcionar.