Giter VIP home page Giter VIP logo

diceroll's Introduction

КодоЛаба: Флаги командной строки, функции, случайные числа.

Программирование на Go, Школа Программистов 2019

В данной кодолабе вам нужно будет написать программу, которая имитирует бросание игрального кубика.

В итоге у вас получится полноценная программа, которая работает с флагами командной строки.

Шаг 0. Что есть сейчас ?

Сейчас программа умеет выводить числа от 1 до 6.

Также программа принимает флаг для установки начального значения случайного генератора.

$ go run main.go -seed 4
>> 2

Запустите программу go run main.go -seed 42. Запомните, что она вывела.

Шаг 1. Функция случайного числа

  1. Допишите функцию randInterval, чтобы она возвращала число из диапазона [l,r]

  2. Замените вызов fmt.Println(rand.Intn(6) + 1)на fmt.Println(randInterval(1,6))

  3. Проверьте себя, запустите программу еще раз go run main.go -seed 42. Результат не должен измениться.

Шаг 2. "Увеличиваем кубик"

В многих настольных играх, таких как 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.

Шаг 3. "Кинем кубик несколько раз"

Добавьте новый флаг n. При передаче этого флага программа должна выводить N случайных чисел.

Все остальные флаги должны учитываться.

$ go run main.go -start 0 -end 1 -n 3 

Выводом данной программы должы быть 3 бинарных числа.

Вам нужно использовать функцию randInterval и цикл, чтобы решить эту задачу.

По умолчанию должно выводиться только одно число.

Проверьте себя, запустите программу еще раз go run main.go -seed 42. Результат должен соотвествовать результату из шага 2.

Шаг 4. "Без повторений"

Добавьте булевый флаг norepeat.

При вызове программы с заданым флагом и флагом n, числа в выводе не должны повторяться.

$ go run main.go -start 0 -end 6 -n 3 -norepeat
>> 3,1,4   

По умолчанию данный флаг равен false.

Добавьте сообщение об ошибке, если не возможно вывести N чисел от L до R без повторений.

diceroll's People

Contributors

jnovikov avatar sweetlhare avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.