Я новичок в программировании и рубине. Я работаю над кодом, который имеет отношение к определенному диофантовому уравнению (из задачи MIT opencourseware) и просто вид того, что я могу с ним сделать.Рубино-диофантовые уравнения - проблемы с хешем
Код создает три массива и хэш двух из них для конкретного линейного уравнения с тремя переменными.
Вот код:
def diophantine_solutions(x)
#For all x > 1, finds values for a, b, c such that 6a + 9b + 20c = x,
#Creates array of solvable x, unsolvable x,
#Creates hash of solvable x with possible values of a, b, c
nopes=(1..x).to_a #will contain sums with no solutions at the end
yups=[] #has solvalbes
yups_values=[] #solutions for a, b, c
yups_hash={} #sums with the solutions
while x>0
for a in (0..x/6):
for b in (0..x/9):
for c in (0..x/20):
total=6*a + 9*b + 20*c
if total==x
yups<< x
yups_values<< [a, b, c]
end
end
end
end
x=x-1
end
yups_hash=[yups.zip(yups_values)]
yups=yups.uniq
nopes=nopes-yups
puts yups_hash[20]
end
diophantine_solutions(20)
То, что я пытаюсь сделать, теперь доступ к отдельным хэш-спариваний, чтобы убедиться, что они выстраиваются в порядке, но
puts yups_hash[]
возвращает NIL для любого номер. Любая помощь? Кроме того, будучи новым, как я, если есть лучшие способы сделать что-либо, что я сделал, я был бы признателен, если вы сообщите мне об этом.
Это возвращает ошибку: '[] ': нечетное количество аргументов для Hash (ArgumentError). Я пытаюсь сделать хэш из него, сопоставляя значение x с [a, b, c] для каждого значения x, имеющего решение, и для каждого набора из [a, b, c] таких, что они вместе удовлетворяют уравнению для х. Я хочу собрать эту информацию и назвать, какие вариации [a, b, c] решают уравнение для одного и того же значения x. – qrrr
@quiet_engine Какая версия Ruby? Прекрасно работает для меня. –