В данной кодолабе вам нужно будет написать программу, которая имитирует бросание игрального кубика.
В итоге у вас получится полноценная программа, которая работает с флагами командной строки.
Сейчас программа умеет выводить числа от 1 до 6.
Также программа принимает флаг для установки начального значения случайного генератора.
$ go run main.go -seed 4
>> 2
Запустите программу go run main.go -seed 42
. Запомните, что она вывела.
-
Допишите функцию randInterval, чтобы она возвращала число из диапазона [l,r]
-
Замените вызов
fmt.Println(rand.Intn(6) + 1)
наfmt.Println(randInterval(1,6))
-
Проверьте себя, запустите программу еще раз
go run main.go -seed 42
. Результат не должен измениться.
В многих настольных играх, таких как DnD нужно иметь кубики, которые дают больше значений.
Например, 12-гранники, которые дают числа от 1 до 12 включительно.
Добавьте в нашу программу два флага командной строки типа Int, которые будут обозначать начало и конец интервала кубика.
$ go run main.go -seed 42 -start 1 -end 10
Вам нужно использовать функцию randInterval и цикл, чтобы решить эту задачу.
Проверьте, что программа корректно работает, несколько раз запустите
$ go run main.go -start 0 -end 1
Должны возвращаться только числа 0 и 1
По умолчанию границы должны остаться от 1 до 6.
Проверьте себя, запустите программу еще раз go run main.go -seed 42
. Результат должен соотвествовать результату из шага 1.
(Дополнительно) Программа должна выводить сообщение об ошибке, если start > end.
Добавьте новый флаг n. При передаче этого флага программа должна выводить N случайных чисел.
Все остальные флаги должны учитываться.
$ go run main.go -start 0 -end 1 -n 3
Выводом данной программы должы быть 3 бинарных числа.
Вам нужно использовать функцию randInterval и цикл, чтобы решить эту задачу.
По умолчанию должно выводиться только одно число.
Проверьте себя, запустите программу еще раз go run main.go -seed 42
. Результат должен соотвествовать результату из шага 2.
Добавьте булевый флаг norepeat.
При вызове программы с заданым флагом и флагом n, числа в выводе не должны повторяться.
$ go run main.go -start 0 -end 6 -n 3 -norepeat
>> 3,1,4
По умолчанию данный флаг равен false.
Добавьте сообщение об ошибке, если не возможно вывести N чисел от L до R без повторений.