Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
65
Task/Metallic-ratios/Groovy/metallic-ratios.groovy
Normal file
65
Task/Metallic-ratios/Groovy/metallic-ratios.groovy
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
class MetallicRatios {
|
||||
private static List<String> names = new ArrayList<>()
|
||||
static {
|
||||
names.add("Platinum")
|
||||
names.add("Golden")
|
||||
names.add("Silver")
|
||||
names.add("Bronze")
|
||||
names.add("Copper")
|
||||
names.add("Nickel")
|
||||
names.add("Aluminum")
|
||||
names.add("Iron")
|
||||
names.add("Tin")
|
||||
names.add("Lead")
|
||||
}
|
||||
|
||||
private static void lucas(long b) {
|
||||
printf("Lucas sequence for %s ratio, where b = %d\n", names[b], b)
|
||||
print("First 15 elements: ")
|
||||
long x0 = 1
|
||||
long x1 = 1
|
||||
printf("%d, %d", x0, x1)
|
||||
for (int i = 1; i < 13; ++i) {
|
||||
long x2 = b * x1 + x0
|
||||
printf(", %d", x2)
|
||||
x0 = x1
|
||||
x1 = x2
|
||||
}
|
||||
println()
|
||||
}
|
||||
|
||||
private static void metallic(long b, int dp) {
|
||||
BigInteger x0 = BigInteger.ONE
|
||||
BigInteger x1 = BigInteger.ONE
|
||||
BigInteger x2
|
||||
BigInteger bb = BigInteger.valueOf(b)
|
||||
BigDecimal ratio = BigDecimal.ONE.setScale(dp)
|
||||
int iters = 0
|
||||
String prev = ratio.toString()
|
||||
while (true) {
|
||||
iters++
|
||||
x2 = bb * x1 + x0
|
||||
String thiz = (x2.toBigDecimal().setScale(dp) / x1.toBigDecimal().setScale(dp)).toString()
|
||||
if (prev == thiz) {
|
||||
String plural = "s"
|
||||
if (iters == 1) {
|
||||
plural = ""
|
||||
}
|
||||
printf("Value after %d iteration%s: %s\n\n", iters, plural, thiz)
|
||||
return
|
||||
}
|
||||
prev = thiz
|
||||
x0 = x1
|
||||
x1 = x2
|
||||
}
|
||||
}
|
||||
|
||||
static void main(String[] args) {
|
||||
for (int b = 0; b < 10; ++b) {
|
||||
lucas(b)
|
||||
metallic(b, 32)
|
||||
}
|
||||
println("Golden ratio, where b = 1:")
|
||||
metallic(1, 256)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue