scala> object Main {
|
| def half[T:Integral](a:T) : T = a / 2.asInstanceOf[T]
| def odd[T:Integral](a:T) : Boolean = a % 2.asInstanceOf[T] == 1.asInstanceOf[T]
|
| def mult_acc11[T:Integral](n:T, a:T, r:T = 0) : T = (odd(n), n) match {
| case (true, 1) => r + a
| case (true, _) => mult_acc11(half(n), a + a, r + a)
| case (_,_) => mult_acc11(half(n), a + a, r)
| }
|
| def main(args: Array[String]): Unit = {
| println(mult_acc11(7, 5))
|
| // println(mult_acc11(BigInt(700000000), BigInt(500000000)))
| // missing argument for parameter evidence$3 of method mult_acc11 in object Main: (implicit evidence$3: Integral[Matchable]): Matchable
|
| println(mult_acc11(BigInt(700000000), BigInt(500000000), BigInt(0)))
| }
| }
// defined object Main
scala> Main.main(Array())
35
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class scala.math.BigInt (java.lang.Integer is in module java.base of loader 'bootstrap'; scala.math.BigInt is in unnamed module of loader java.net.URLClassLoader @667e34b1)
at scala.math.Numeric$BigIntIsIntegral$.rem(Numeric.scala:49)
at scala.math.Integral$IntegralOps.$percent(Integral.scala:24)
at rs$line$11$Main$.odd(rs$line$11:4)
at rs$line$11$Main$.mult_acc11(rs$line$11:6)
at rs$line$11$Main$.main(rs$line$11:18)
... 34 elided
Проблема в том, что данные идут в разнобой и отсортировать их приведя к одному виду не получается.
Отсюда вопрос, можно ли написать цикл, который бы проверял кажую строку и при условии равенства имени, даты и номера раунда производил вычисление.
int strlength(const char *str) {
int i = -1;
while(str[++i]);
return i;
}
void copyToAnotherString(const char* str1, char* str2) {
.....
}
result = malloc(string_size + sub_size - to_size);
Собсно откуда у меня проблема пошла. Есть сет алгортмов на С++ написанных мной еще лет 15 назад. Игры с целочисленной арифметикой. Генерация простых и прочее. И возникло у меня желание с минимальными изменениями перенести это все в диапазон Int/Long/BigInt.
Я надеялся что перегруженные операции помогут. Но вот здесь odd и half выглядят достаточно костыльно. Ну тоесть эффект - "ну нормуль" наблюдается. Но чтобы эффект ура-ура... такого нет.
Впрочем я не буду к вам приставать. Я думаю на этот топик уже ответ получен. Его можно и закрыть.