Número de rotações


10

Tarefa

Escreva uma função ou um programa para encontrar o número de rotações necessárias para uma roda percorrer uma determinada distância, considerando seu raio.

Regras

A entrada pode ter 2 números racionais positivos e pode ser obtida em qualquer formato conveniente.

Ambas as entradas são da mesma unidade.

Não deve haver nenhum dígito de 0 a 9 no seu código.

A saída será um número inteiro (no caso de flutuação, arredondar para o infinito)

Isso é código-golfe, então o código mais curto ganha

Exemplos

distance radius  output
10       1       2
50       2       4
52.22    4       3
3.4      0.08    7
12.5663  0.9999  3

5
Você provavelmente deve adicionar que os dígitos também são proibidos nas opções do compilador (ou em qualquer outro lugar): se você limitar essa restrição ao código, com o gcc, podemos fazer algo como -DP=3.14nos sinalizadores do compilador, que definiriam Pcomo uma aproximação de pi, o que provavelmente é não o que você destina
Annyo

Respostas:


6

MathGolf , 5 4 bytes

τ/╠ü

Experimente online!

Explicação

τ      Push tau (2*pi)
 /     Divide the first argument (total distance) by tau
  ╠    Reverse divide (computes (distance/tau)/radius)
   ü   Ceiling


4

Java 8, 32 e 30 bytes

a->b->-~(int)(a/b/Math.PI/'')

Contém imprimível \u0002entre aspas simples.

Porto da resposta Perl 6 do @jOKing .

Experimente online.


Esse é o dígito '1' no seu código? Eu acho que isso pode não ser permitido.
ouflak

4
Looks @ouflak como ele pode ser corrigido como este .
Erik the Outgolfer

@ouflak Woops, isso foi um erro muito estúpido .. Usar o imprimível para não usar o dígito 2e depois usar o dígito 1... Felizmente, Erik está certo de que um simples unário negativo tem o mesmo efeito que +1(frequentemente usado livrar-se dos parênteses, pois o negativo e o unário têm maior precedência do que a maioria dos outros operadores).
21718 Kevin Kevin Krijssen em

4

Perl 6 , 15 12 bytes

-3 bytes tjanks para nwellnhof, lembrando-me sobre tau

*/*/τ+|$+!$

Experimente online!

Anônimo Qualquer que seja a lambda que use a fórmula (a/b/tau).floor+1. Tau é duas vezes pi. As duas variáveis ​​anônimas $são coagidas ao número 0, que é usado para +|0somar o número (bit a bit ou 0) e adicionar um +!$(mais não zero).


Não deve haver dígitos de 0 a 9 no seu código.
Titus

@ Titus Não acredito que esqueci isso. Obrigado, consertado!
Jo rei

Os dígitos nos expoentes também são permitidos?
precisa saber é

3

Python 2 , 47 45 44 43 bytes

lambda l,r:l/(r+r)//math.pi+l/l
import math

Experimente online!


  • -2 bytes, graças ao flawr
  • -1 byte, graças a Jonathan Allan

Como é garantido que as entradas são (estritamente) positivas e racionais, nunca chegamos ao limite de exigir um número exato de rotações, então acho que podemos fazer l/(r+r)//pi+l/le salvar um byte.
Jonathan Allan

@JonathanAllan Thanks :) #
TFeld




2

C, 46 bytes

f(float a,float b){return ceil(a/(b+b)/M_PI);}

Sou novo no PPCG, portanto, não tenho certeza se preciso contar outras partes na contagem de bytes, como o

include <math.h>

necessário para a função ceil, que aumentará a contagem para 64 bytes


Bem-vindo ao PPCG! Esta é uma boa primeira resposta. Sim, você precisa contar #includee afins para o total de bytes. Um link para um conjunto de testes on-line é sempre apreciado, aqui está um que você está livre para incorporar em seu post: tio.run/...
OOBalance

Dígitos do @OOBalance não são permitidos no código para este desafio;)
Annyo

@Annyo Eu sabia que estava esquecendo alguma coisa :(
OOBalance

2

Catholicon , 8 bytes

ċ//ĊǓĊ`Ė

Explicação:

  /ĊǓĊ    divide the first input by the doubled second input
 /    `Ė  divide that by pi
ċ         ceil

Nova versão (pi construído em um byte, parâmetros de divisão trocados), 5 bytes

ċ/π/Ǔ



2

MathGolf , 6 5 bytes

∞/π/ü

Semi-porta do comentário Python 2 de @flawr .
Recebe a entrada na ordem radius distance.

-1 byte porque o ceilbuilt-in acaba de ser adicionado, substituindo o floor+1.

Experimente online .

Explicação:

        # Double the first (implicit) input
 /       # Divide the second (implicit) input by it
  π/     # Divide it by PI
    ü    # Ceil (and output implicitly)

2

C (gcc) , 45 47 45 bytes

f(d,r,R)float d,r;{R=ceil(d/r/'G'/'\n'*'q');}

Uma aproximação razoável de pi é 355/113. Como a circunferência C = 2 * r * PI, podemos, em vez de pi, usar tau, que, é claro, é ~ 710/113. 710 passa a ter os fatores convenientes 2 * 5 * 71, que são compactados como 'G' * '\n'. Nós adicionamos um ( r/r) para forçar o arredondamento para o infinito.

Edit: Meu truque era muito inteligente para o seu próprio bem: é claro que fazia falhar se a distância fosse um múltiplo da circunferência.

Experimente online!



2

R , 39 32 bytes

-7 bytes Graças a Giuseppe

function(d,r)ceiling(d/(r+r)/pi)

Experimente online!

Eu sinto que isso definitivamente poderia ser jogado, mas estou um pouco preguiçoso agora para fazer qualquer coisa sobre isso


2

min , 16 bytes

/ tau / ceil int

Toma a distância e o raio colocados na pilha nessa ordem. Em seguida, divide por tau, arredonda e faz int.







1

Lua , 61 58 57 49 bytes

function(s,r)return math.ceil(s/(r+r)/math.pi)end

Experimente online!

Graças a KirillL. -8 bytes.


Eu não sei muito Lua (talvez por isso ainda é muito longo), mas parece ser mais curto em função: 49 bytes
Kirill L.

@KirillL., Ainda estou aprendendo as regras aqui. O desafio do OP é bastante aberto na entrada. Então, minha pergunta é: teríamos que contar sua chamada de programa () contra a contagem de bytes? Caso contrário, o seu é definitivamente um bom pedaço.
Ouflak # 22/18

Um estilo bastante comum de envio aqui é uma função anônima (para que não tenhamos que contar o nome, a menos que seja recursivo), que gera pelo seu valor de retorno. A seção de rodapé com chamadas de função e impressão real no console é então basicamente usada para visualizar os resultados e não conta para a sua pontuação. BTW, você pode adicionar mais exemplos de teste do OP ao rodapé, para que eles possam ser visualizados convenientemente de uma só vez. Observe que, em alguns casos, um programa completo pode realmente ser um golfista!
22418 Kirill L.


1

Tcl , 50 bytes

proc N d\ r {expr ceil($d/(($r+$r)*acos(-$r/$r)))}

Experimente online!


Tcl , 53 bytes

proc N d\ r {expr ceil($d/(($r+$r)*acos(-[incr i])))}

Experimente online!

A falta de uma constante ou função pi me faz perder a competição de golfe!


Preciso remover o .0 no final de cada saída? Isso me faria consumir mais bytes!
Sergiol # 22/18

11
[incr i]é bastante inteligente, mas acho que você pode usar $d/$dou $r/$rnão.
david

Economizei alguns bytes graças à idéia de @ david!
Sergiol # 22/18

1

PowerShell, 53 52 51 bytes

-1 byte graças a @mazzy
-1 byte depois que percebi que não precisava de um ponto e vírgula após o param()bloco

param($d,$r)($a=[math])::ceiling($d/($r+$r)/$a::pi)

Experimente online!

Recebe entrada de dois parâmetros da linha de comando, distância -de raio -r.


? param($d,$r);($a=[math])::ceiling($d/($r+$r)/$a::pi)
Mazzy


0

Clojure , 50 bytes

(fn[a b](int(Math/ceil(/ a Math/PI(count"  ")b))))

Uma função anônima que aceita dois números inteiros ae bcomo argumentos: a distância e o raio da roda, respectivamente.

Experimente online!

(count " ")2a2πb


0

TI-Basic (série 83), 12 bytes

-int(-Tmax⁻¹min(e^(ΔList(ln(Ans

Leva a entrada como uma lista de raio e distância em Ans: por exemplo {0.9999:12.5663:prgmX,.

e^(ΔList(ln(Anstomará a proporção dessas distâncias e min(transformará isso em um número. Em seguida, dividimos por Tmax, que é um parâmetro gráfico que é igual a 2π por padrão. Finalmente, -int(-pega o teto.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.