O desafio de 9 buracos
- 9 desafios de código de golfe de dificuldade variável.
- Sanções por usar o mesmo idioma mais de uma vez.
A pergunta será atualizada com pares, campeões de buracos e vencedores de troféus.
Isso vem de uma competição que eu tenho com alguns amigos, não é o formato usual, mas espero que alguns de vocês gostem da diferença. Desafios, regras e troféus abaixo.
Furos
Greenway (24)
f(c:string, n:integer)
Imprime uma linha contendon
instâncias dec
.Em Algum Lugar Difícil (73)
f(t:string, s:string, n:integer) -> i
Ondei
está o índice danth
instância des
int
.Caril para o jantar (6235)
f(x:function, y: function) -> g
Ondeg
está uma função que chamaráy
,n
times; onden
é o valor de retorno dex
Vomitar (92)
f(p:string)
Grava no arquivop
e o preenche com um retângulo de tamanho aleatório de caracteres aleatórios (ascii).Caça ao tesouro (75)
f(p:string, c:char) -> (x, y)
Lê o arquivo nop
qual contém uma grade de símbolos e retorna as coordenadasx
ey
da primeira instância desse símbolo na grade, suponha que ele exista.Ponte sobre o rio Kwai (179)
f(l:list[int])
Imprime o diagrama de pontes de diferença paral
. Por exemplo, para[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Verifique se os espaços foram criados de acordo com o tamanho do número acima. Para um número longo de 3 dígitos, você precisará de 4 espaços entre os dígitos na linha abaixo.
Captura: em algum lugar, seu código deve soletrar calças (deve ter pelo menos 1 delimitadores não alfanuméricos.
tr(ou,se)(rs)
O tempo voa quando você joga golfe (1157)
f(p:string) -> [h, m]
Lê o arquivo nop
qual contém uma representação ASCII de um relógio analógico, em que o ponteiro das horas é representado com uma linha e os minutos por duas. Saída uma lista contendo dois elementos: as horas e os minutos mostrados no relógio. Se apenas uma mão estiver visível, assuma que ambos apontam para essa posição.Aqui estão todas as combinações possíveis para uma mão.
\ | / \|/ --o-- /|\ / | \
Essas posições, respectivamente, são (12, 1, 3, 5, 6, 7, 9, 11). Suponha que os outros caracteres na face do relógio sejam espaços.
Madeira! ()
f(p:string) -> b:boolean
Onde p é o caminho para um arquivo com um edifício ASCII. Os blocos com espaço em branco embaixo deles cairão. (Exceto pelas barras, que permanecem no lugar se houver um bloco estável na direção oposta à maneira como elas se enfrentam). Se o edifício for estruturalmente integral, retorne true, caso contrário, retorne false. Todos os blocos que não são de espaço em branco são contados como sólidos e, exceto barras, todos caem.Estruturalmente seguro
____ |/\| | |
Não é seguro
|__ | |
Versão segura
|__ \\| |
Notícias do Slacker (218)
f(s:string, r:string, p:string)
Obtém os títulos das 20 principais histórias do Hacker News e altera todas as instâncias des
parar
, depois grava os novos títulos em um arquivo html emp
, onde cada título está contido em um elemento h1.O arquivo gerado deve ser algo como isto
<h1>Some title</h1></h1>Some other title</h1>...etc
Captura :
- Você não pode usar a API do HN.
- Você não pode usar o Regex.
- Você não pode usar chaves de ângulo em nenhum lugar do seu código.
Pontuação
- Contagem de caracteres é o comprimento da função que será compilada e executada corretamente. No entanto, você ainda precisa enviar o código completo, incluindo as importações.
- + 10% para cada idioma repetido no seu envio. (Por exemplo, se você usar Ruby para 3 soluções, sua pontuação final será multiplicada por 1,2). Versões diferentes do mesmo idioma contam ainda como o mesmo idioma.
- Par será a pontuação média para cada buraco.
- Envie suas soluções em uma resposta.
- Sua pontuação geral é a contagem de caracteres + a penalidade no idioma e, em seguida, arredonda-a para cima.
Troféus
- Gold Jacket - ( @Sprigyig - 1290) Pontuação geral mais baixa
- Atirador - ( @Sprigyig - 9) A maioria dos idiomas usados
- Bunker - Maior pontuação acima do par em qualquer buraco
- Snakes on a Plane - ( @AsksAnyway - 1727) Maior envio de caracteres python em uma única solução
- Good Parts - ( @AsksAnyway - 255) Maior contagem de caracteres JS em uma única solução
- Shakey Steve - Solução mais curta que usa interfaces
- Você não é da região : a solução de idioma exclusivo mais curta, que possui a menor página da wikipedia.
- Happy Gilmoore - ( @AsksAnyway - 31) Solução mais curta que tem a palavra 'jacaré' no código.
- Unicycle Dwarf Magic - As extensões padrão dos seus 9 arquivos de origem de envio são um anagrama perfeito de uma palavra no Dicionário Oxford.
Você só é elegível para um troféu depois de completar os 9 buracos
Submissões
- @Sprigyig 1290
- @Firefly 1320
- @grc 1395
- @Trevor M 1465
- @C Gearhart 1654
- @Guy Sirton 1719
- @AsksAnyway 4651
fonte
<
&>
/
posição se refira a 1 ou 2? (e da mesma forma para todo o resto das diagonais)Respostas:
Pontuação: 4651
2907 + 60% de penalidade
1. GolfScript - 14 caracteres
Uso:
c n a
por exemplo"test" 3 a
->testtesttest
Happy Gilmoore
2. Python - 72 caracteres
3. Javascript - 255 caracteres
Bunker Good Parts
4. Python - 132 caracteres
5. Python - 89 caracteres
6. Python - 189 caracteres
7. Python - 1727 caracteres
Cobras em um avião
8. Python - 226 caracteres
9. Python - 203 caracteres
fonte
i<i<42
), ou eles são permitidos desde que você os use apenas como operadores?Pontuação: 1320
Eu tenho muito o que fazer para melhorar essa pontuação ... Bem, pelo menos evitei penalidades repetidas em idiomas. :-)
1. Python (21 caracteres)
A solução "óbvia".
2. ECMAScript 6 (47 caracteres)
Localiza o índice de uma maneira não convencional, contando o comprimento da substring antes dele.
3. J (12 caracteres)
A conjunção
^:
interna eleva uma função a uma potência (ou seja, repete uma função um determinado número de vezes). Isto éf^:3 y = f (f (f y)))
. No entanto, está sobrecarregado para aceitar funções em vez de números inteiros; nesse caso, ele executa a função na entrada para obter o número de repetições. Infelizmente, precisamos inverter os operandos para a tarefa, caso contrário teríamos a resposta concisaf=:^:
.4. C (95 caracteres)
Essa tarefa deixa bastante espaço para interpretação e abuso: é correto apenas gerar um caractere ASCII imprimível aleatório e dizer que é um retângulo de dimensão aleatória com dimensões do conjunto {1}? Provavelmente não. Enfim, eu fui com simples,
rand()
mas na realidade você provavelmente deseja adicionar%9
ou algo assim, se você quiser testá-lo. Na minha caixa do linux, não precisei liberar o arquivo para que ele fosse gravado (acho que é liberado automaticamente na saída do programa), mas tenho certeza de que você deve liberá-lo para estar em conformidade com os padrões, então sinta-se livre para adicionarfflush(f);
à contagem aqui.5. Haskell (100 caracteres)
Eu gosto do padrão repetido entre encontrar a linha e a coluna (abstraído via
h
).6. Lua (261 caracteres)
Faz uso de vários valores de retorno e recursão para lidar com o cálculo das diferenças. Custou-me alguns caracteres para combinar exatamente com a saída de amostra (adicionando a quantidade certa de espaços em todos os lugares).
7. Go (307 caracteres)
Provavelmente poderia ser jogado muito mais; Eu mal conheço Go.
8. CoffeeScript (+ node.js) (223 caracteres)
Um pouco barato desde que eu já tenho JS. Ah bem. Retorna um valor falso (ou seja
undefined
) ou um valor verdadeiro (ou seja1
) para indicar a resposta.9. Bash (254 caracteres)
(Novas linhas após os tubos adicionadas para facilitar a leitura.) Trabalhar com as restrições com o shell foi divertido. Percebo que provavelmente há uma maneira melhor de fazer
$2,$4,$6,...
, mas foi assim que surgiu.fonte
f=str.__mul__
Pontuação: 1.394,4
996 caracteres + 40% de penalidade
1. Greenway - Haskell, 19 caracteres
Uso:
2. Áspero - PHP, 72 caracteres
3. Caril - JavaScript 1.8, 45 caracteres
4. Vomitar - J, 43 caracteres
Uso:
5. Tesouro - J, 64 caracteres
Uso:
6. Bridge - Python, 166 caracteres
7. Time - Python, 205 caracteres
Assume que as linhas têm espaço preenchido com cinco caracteres de largura. Usa guias para o segundo nível de recuo.
8. Madeira - Python, 190 caracteres
9. Slacker - Python, 192 caracteres
Agradecimentos a Tyzoid pela idéia de encurtador de URL.
fonte
Edit: Acho que vou enviar isso como está: 1290 total, nenhum idioma se repete.
Greenway, C # 53
Decidi trocar idiomas com os nºs 1 e 9. Totalmente 30 aqui para centenas depois.
Em algum lugar difícil, Python 59
Eu realmente não deveria ter usado uma linguagem tão boa em um problema fácil. Além disso, como isso não faz parte da família indexOf de nenhuma linguagem de funções? Parece que eu sempre preciso disso ...
Caril Para O Jantar, Lisp 61
Eu não toquei lisp desde que uma semana na faculdade ....
Vomitar, utilitários Bash / shell 102
Meu bash-foo nunca foi tão bom para começar. Eu vou mexer com isso mais tarde. BTW, se você quiser terminar mais rápido, mude para / dev / urandom.
Caça ao tesouro, C 113
Provavelmente um dos problemas mais amigáveis em C. Eu interpretei "retornar dois inteiros" como um ponteiro de matriz de retorno como argumento. Avisos? Quais avisos? Um int * é tão bom quanto um FILE * = p.
Ponte sobre o rio Kwai, Perl 207
Comecei a aprender perl enquanto escrevia este. (Antes tarde do que nunca!) Eu entrei nisso querendo fazer heroísmo de regex, então formei a cadeia de caracteres como as duas camadas da ponte juntas e depois usei regexes com substituições de espaço para formar as duas linhas diferentes.
O tempo voa quando você está jogando golfe, Java 297
Você só pode fazer muito para tornar o Java conciso ... Supõe que o relógio seja preenchido com espaço para que cada linha tenha 5 espaços.
Madeira! Javascript 201
Ele roda no console do chrome. Não dou garantias em outro lugar = p. Requer que as linhas sejam preenchidas com espaço ao comprimento da linha mais longa. Eu sinto que este é um pedido razoável da arte ASCII.
Notícias Slacker, Ruby 197
fonte
Diverti-me tocando algumas línguas por um tempo ...
Contagens de caracteres obtidas após a remoção de espaços / novas linhas desnecessárias, mas o envio geralmente é legível. Como a pergunta é uma mistura de funções e programas, incluí apenas o corpo da função quando necessário ... Também alguma liberdade tomada com o significado do "retorno" ...
Total ~ 1719
1- Python (~ 20)
2- C (~ 109)
Versão legível:
3- Javascript (~ 56)
4- Rexx (~ 136)
5- Scala (~ 290)
6- C ++ (~ 355)
7- Ir (~ 301)
Observe que isso exige que o relógio seja preenchido (ou seja, todas as linhas têm o mesmo comprimento).
8- Rubi (~ 259)
9- hack do bash / Unix (~ 193)
fonte
Na verdade, não estou aqui para jogar golfe, mas aqui está um pouco de Tcl, já que o idioma precisa de mais amor:
Principalmente não testado porque escrever esses procs em meia hora é muito mais interessante do que tentar projetar adequadamente o código do golfe. Desfrutar!
fonte
Só tive tempo de trabalhar em 1/2 delas. Você parece desejá-los na forma de uma função e não de uma linha. Então, todas essas são funções. Teste de código abaixo da função. Em Perl.
Via Verde:
Rude:
Curry:
Vomitar:
Tesouro:
Eu vou trabalhar em 6-9 amanhã.
fonte
WIP. Observe que a contagem de caracteres pode estar desativada devido a
'\n'
ewc
[1 Greenway] Mindf * ck, 54 caracteres
Uso: Depois que o código for escrito, insira sua sequência e termine-a com ^ a (ctr + a); em seguida, imediatamente depois, insira seu número.
Uma ressalva: o número fornecido deve ser apenas de 0 a 9 (se você desejar um número maior, o valor ASCII-48 de qualquer caractere digitado será usado
n
)Captura de tela:
[3 Curry for Dinner] Javascript, 59 caracteres
[4 vomitar] BASH, 56 caracteres
[7 o tempo voa ao jogar golfe] C, 334 caracteres (412 com definição de macro)
Nota: esta função retorna um ponteiro para uma matriz inteira bidimensional, formatada da seguinte forma: {3, 55} (para uma posição do relógio de hora em 3, minuto em 11)
[9 Slacker News] PHP, 246 caracteres
Implementação separada / original em BASH + AWK, 218 caracteres
fonte
1654
1. Greenway (Haskell - 37)
2. Em algum lugar difícil (Mathematica - 43)
3. Caril para o jantar (Lisp - 58)
4. Vomitar (Matlab / Octave - 83)
5. Caça ao Tesouro (C - 176)
6. Ponte sobre o rio Kwai (Ruby - 192)
7. O tempo voa quando você joga golfe (Node.js - 406)
8. Madeira! (Go - 329)
9. Slacker News (Python - 330)
fonte
Eu sou um trapaceiro e ainda não joguei todos os 9 buracos ... ainda . No entanto, aqui está o meu buraco 8, a solução “Timber” em Perl (149 caracteres).
Um dos meus colegas de trabalho colocou isso como um desafio no trabalho. Temos nos divertido com ele, especialmente eu, desde que eu tenho a menor solução par até agora!
Nossas regras eram que tinha que ser um script independente que produzisse
true
oufalse
seguisse uma nova linha paraSTDOUT
, e que nenhum "shebang" fosse bom.Abaixo está a solução "minificada". Também coloquei uma " essência " do mesmo que inclui código não "minificado" e (muitas vezes tortuosamente longo) explicações do raciocínio por trás da minha abordagem.
fonte
Estou com preguiça de modificá-lo de acordo com as regras da competição Meh, mas funciona bem ...
fonte
Primeiro código de golfe! (Ainda um trabalho em andamento ...)
1. Greenway
Idioma: Python 3.2.3
Tamanho do arquivo: 23 bytes
Código:
3. Caril para o jantar
Idioma: Python 3.2.3
Tamanho do arquivo: 64 bytes
Código:
fonte
Outro trabalho em andamento aqui, e estou no trabalho, então voltarei mais tarde.
Greenway em Ruby (14 caracteres, 24 com #alligator ), ligue com
f.(c, n)
Captura de tela
Em algum lugar difícil no CoffeeScript (38 caracteres)
Captura de tela
Curry for Dinner em JavaScript (54 caracteres)
Captura de tela
Vomitar em PHP (111 caracteres)
Isso requer que
short_open_tag
o arquivo de configuração do PHP esteja ativado. Caso contrário, o delimitador de abertura deve ser<?php
, os@
símbolos são usados para silenciar osPHP_NOTICE
erros lançados para evitar o fechamentorand
entre aspas e para não declarar explicitamente a$s
variável. Isso gerará uma grade quadrada de caracteres ascii entre 4 e 30 caracteres nos dois eixos.Captura de tela
fonte
1. Greenway (Python 2: 20)
Exemplo de entrada:
a("asdf",3)
-> string (asdfasdfasdf
)2. Em algum lugar difícil (Python 2: 47)
Exemplo de entrada:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Caril para o jantar (Javascript: 61)
Exemplo de entrada:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> registrastring(1)
no console ... 3 vezes.De acordo com as especificações,
c
retorna uma função e, na verdade, não executa essa função.4. Vomitar (C ++ 11: 171)
Na verdade, não testei isso, mas deve funcionar.
fonte
Alguma indentação é deixada intacta para facilitar a leitura, mas foi retirada ao contar caracteres. O total é de cerca de
1227. Ou não, eu esqueci um problema.14861465 caracteres.1. MIPS ASM (55 caracteres)
2. Esquema (52 caracteres)
3. F # (39 caracteres)
4. PowerShell (133 caracteres)
5. C ++ (
184152 caracteres)6. C # (
291282 caracteres)7. Haskell (
318306caracteres)Eu estava procurando uma desculpa para experimentar Haskell. Eu pensei que era inteligente ao gerar a lista de posições por meio de combinações de números, mas com o número de caracteres necessários eu poderia ter codificado a maldita coisa. Ah bem. O código é atroz, mas foi divertido escrever de qualquer maneira.
editar: corrigido para que retorne minutos corretamente.
8. Lua (259 caracteres)
Fiquei surpreso ao descobrir que as strings não suportavam a indexação de estilos de matriz, então tive que confiar no sub.
9. Python (187 caracteres)
Obrigado a grc / Tyroid pelo encurtador de URL.
fonte