- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
Вот прога на C#:
using System;
namespace SomeNamespace
{
class SomeProgram
{
public static void Main(string[] args)
{
ulong input = ulong.Parse(Console.ReadLine());
int counter = 0;
Console.Write(input + " ");
while(input != 3)
{
switch(input % 3)
{
case 0:
input /= 3;
Console.Write("/ 3 = " + input + " ");
counter++;
break;
case 1:
input--;
Console.Write("- 1 = " + input + " ");
counter++;
break;
case 2:
input++;
Console.Write("+ 1 = " + input + " ");
counter++;
break;
}
}
Console.WriteLine("\n3 reached. Number of moves: " + counter);
}
}
}
А вот на питонии:
inpt = int(input())
counter = 0
print(str(inpt),end=' ')
while not (inpt==3):
if not(inpt%3==0):
if inpt % 3 == 1:
inpt -= 1
print("- 1 = "+str(inpt),end=' ')
counter += 1
else:
inpt += 1
print("+ 1 = "+str(inpt),end=' ')
counter += 1
else:
inpt //= 3
print("/ 3 = "+str(inpt),end=' ')
counter += 1
else:
print("\n3 reached. Number of moves: "+str(counter),end='',flush=True)
в C# на любой версии дотнета результат одини тот-же
> not (inpt==3):
Скопке нинужны, и ещё в Питонии есть оптератор !=
используй elif:
В контексте. Всегда в контексте.
https://gist.github.com/k32/f2999ee884b5c7d08dfff2f594ccb3c3
Короче дальше там всё просто, доказываем что go сходится к 3 за n шагов, далее используем этот факт для определения уже функции go, используя n как хинт для терминэйшн-чекера.
1) Смесь IO и чистых вычислений
2) По сути это очень медленный интерпретатор
2) видишь BangPatterns? Все оптимизировано
Join за O(n^2)?
Рекомендую [1] для просвещения.
Возник вопрос: актуальна ли эта проблема и решение для Scala?
Строки в скалке обычые, упакованные, их надо по-другому склеивать (буфером или аналогом DList).
По поводу йонед и коденсити точно сказать не могу — не знаю, как это в скалке выглядит и используется (лень смотреть в scalaz).
просто не вводите отрицательные числа, это неуважение к разработчику