1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gitee-community-gitee-7th-event-3

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
F#编程语言实现的生命游戏.fs 1.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Seng-Jik Отправлено 12.06.2020 07:58 acdee33
type Cell =
| Live
| Died
type Map = Cell[][]
let myMap =
let width = 150
let height = 58
Array.init height (fun y ->
Array.init width (fun x ->
if x = width / 2 || y = height / 2 then Live
else Died))
let printMap =
Array.iter (fun line ->
line
|> Array.iter (
function
| Live -> '*'
| Died -> ' '
>> printf "%c")
printfn "")
let clamp v small big =
if v < small then small
else if v > big then big
else v
let slice first last array =
let s = clamp first 0 (-1 + Array.length array)
let e = clamp last 0 (-1 + Array.length array)
array.[s..e]
let nextMap map =
map
|> Array.Parallel.mapi (fun y line ->
line
|> Array.mapi (fun x _ ->
let cur = map.[y].[x]
let neibours =
map
|> slice (y-1) (y+1)
|> Array.collect (slice (x-1) (x+1))
|> Array.filter ((=) Live)
|> Array.length
|> function
| count when cur = Live -> count - 1
| count -> count
match neibours with
| 3 -> Live
| 2 -> cur
| _ -> Died))
let rec playGame map =
System.Console.Clear ()
printMap map
System.Threading.Thread.Sleep 20
playGame (nextMap map)
playGame myMap

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gitee-community-gitee-7th-event-3.git
git@api.gitlife.ru:oschina-mirror/gitee-community-gitee-7th-event-3.git
oschina-mirror
gitee-community-gitee-7th-event-3
gitee-community-gitee-7th-event-3
master