Se você nunca jogou golfe antes, aqui está uma lista de termos relacionados ao golfe que eu uso nesta pergunta
- Chute , também chamado de tacada : Toda vez que a bola é atingida, é um chute.
- Buraco : Um campo de golfe é dividido em buracos, nos quais o objetivo é acertar uma bola de um local designado para outro com o menor número de arremessos possível.
- Tee : Onde você começa um buraco.
- Alfinete ou bandeira : onde você termina um buraco
- Fairway , Rough , Water e Green : recursos em um campo de golfe que afetam a maneira como alguém joga a bola na vida real. (Como eles afetam o programa é especificado abaixo)
Amanhã vou jogar golfe e acho que, às vezes, tenho dificuldade em descobrir qual clube usar para atingir uma certa distância. Então decidi anotar meus tacos e suas jardas por tiro.
Primeira Suposição: Todos os buracos estão ao norte de suas caixas de tee.
Todas essas jardas medem as possibilidades de quão longe a bola viaja para o norte. A bola percorrerá uma distância inteira aleatória entre os limites especificados para cada clube (inclusive).
Como jogador mestre, nenhum dos meus tiros tem mudança horizontal. Isso significa que todas as minhas fotos vão em linha reta diretamente para a bandeira.
Club # Club Yardage
1 Driver 300-330
2 3-Wood 270-299
3 5-Wood 240-269
4 3-Iron 220-239
5 4-Iron 200-219
6 5-Iron 180-199
7 6-Iron 160-179
8 7-Iron 140-159
9 8-Iron 120-139
10 9-Iron 100-119
11 P-Wedge 80-99
12 S-Wedge 50-79
13 L-Wedge 0-49
14 Putter (only on green)
Como uma pessoa que gosta de programar, decido que quero modelar uma partida de golfe e definir uma meta de quão bem quero amanhã. No entanto, como qualquer programador amador, depois de dez minutos, desisti e pedi ajuda no Stack Overflow (apenas brincando). Aqui estão mais alguns dados sobre o curso.
Segunda Suposição: Geografia do Buraco
Todos os números que descrevem distâncias no percurso são inteiros.
Cada buraco é uma linha reta. A distância da linha reta entre cada orifício e o pino (a extremidade do orifício) é
Length
.Fairways são segmentos com comprimento definido por
flen
. O valor listado paraflen
é o intervalo de jardas ao norte do tee onde fica o fairway.Riscos de água são segmentos com comprimento definido por
wlen
, que possui as mesmas propriedades deflen
.O verde tem um comprimento definido por
glen
.Todas as partes do percurso que não são fairway, água ou verde são irregulares.
Aqui está um gráfico descrevendo cada furo no percurso.
Hole # Length flen wlen glen
1 401 54-390 391-425
2 171 1-165 166-179
3 438 41-392 393-420 421-445
4 553 30-281,354-549 282-353 550-589
5 389 48-372 373-404
6 133 125-138
7 496 37-413 414-484 484-502
8 415 50-391 392-420
9 320 23-258 259-303 304-327
Como jogar golfe (para este programa)
- Sempre aponte exatamente para a bandeira.
- Bata na bola o mais próximo possível do pino, tentando manter a bola no fairway ou (de preferência) no green.
- Quando você pousa um tiro na água, seu próximo tiro deve ser jogado do mesmo local que o tiro que entrou na água.
- Quando a bola cair no verde, somente o taco poderá ser usado. Se a bola cair estritamente a mais de 5 jardas do pino, eu toco duas vezes. Caso contrário, eu coloquei uma vez.
- É possível acertar um tiro após o pino.
Pontuação
Minha pontuação em um buraco é o número de disparos que dou, mais um golpe por cada vez que aterro em águas agitadas ou na água.
O programa
Ok, isso foi um monte de regras, agora vamos falar sobre o programa.
O curso deve ser definido como acima no programa , porque o curso é constante. Golfistas diferentes, no entanto, têm distâncias diferentes para cada tacada, portanto a entrada para o STDIN deve ser um conjunto de faixas de jardas, organizadas em ordem crescente do número do clube e separadas por vírgulas (sem espaço em branco).
A saída deve ser como eu "jogo" a partida de golfe. O número de espera deve ser especificado no início de cada linha como Hole #:
onde #
está o furo atual. Cada tiro que não é um putt é da forma seguinte: {club,distance of shot,condition of ball,distance to pin}
. Os detalhes da foto devem ser separados por vírgulas, mas sem espaços em branco na ordem acima. As tomadas em si devem ser escritas na ordem em que são tocadas e separadas por um espaço. Quando a bola cair no verde, o programa deve imprimir quantos tacadas eu tomo, no formato . Cada furo deve estar em sua própria linha e escrito em ordem. Finalmente, na última (décima) linha do programa, o número total de tiros para a rodada deve ser impresso como .{# putts}
. No final de cada linha, o número de fotos que tirei no buraco deve ser separado das outras fotos por um espaço e impresso como(#)
Total: # shots
Não existe uma "estratégia" definida que seu programa precise executar. Você pode escrever um programa com qualquer estratégia que desejar. Estratégias de exemplo incluem maximizar a chance percentual de aterrissar no verde e maximizar a distância de cada tiro até chegar ao buraco.
ENTRADA DE AMOSTRA
300-330,270-299,240-269,220-239,200-219,180-199,160-179,140-159,120-139,100-119,80-99,50-79,0-49
SAÍDA DA AMOSTRA
Hole 1: {Driver,324,Fairway,77} {S-Wedge,70,Green,7} {Two putts} (4)
Hole 2: {6-Iron,162,Water,171} {6-Iron,168,Green,3} {One putt} (4)
Hole 3: {Driver,301,Fairway,137} {8-Iron,131,Green,6} {Two putts} (4)
Hole 4: {3-Wood,288,Water,553} {3-Wood,276,Fairway,277} {3-Wood,291,Green,14} {Two putts} (6)
Hole 5: {Driver,322,Fairway,67} {S-Wedge,62} {One putt} (3)
Hole 6: {8-Iron,120,Rough,18} {L-Wedge,10,Green,8} {Two putts} (5)
Hole 7: {Driver,325,Fairway,171] {6-Iron,170,Green,1} {One putt} (3)
Hole 8: {Driver,306,Fairway,109} {9-Iron,100,Green,9} {Two putts} (4)
Hole 9: {Driver,308,Green,12} {Two putts} (3)
Total: 36 shots
Admito que este é um desafio bastante ambicioso para um primeiro post no CG.SE, por isso ficaria feliz em falar sobre como melhorar esse desafio nos comentários. Obrigado pela ajuda.
0~299
jardas, verde de 300~315
jardas e água de 316~330
jardas. Qual clube será escolhido? E se a água for substituída por áspera?