- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天,我在这里要求提供任何帮助,以解决我在编写此“蛇与梯”游戏时剩下的5个独特错误。我提供下面给出的错误以及代码。
我正在提供我认为有必要为我提供一些指导的所有信息。先感谢您。任何帮助深表感谢。
Main.hs:10:88:
Ambiguous occurrence ‘concat’
It could refer to either 'Data.List.concat'
imported from ‘Data.List’ at Main.hs:3:1-16
(and originally defined in ‘GHC.List’)
or ‘Data.Foldable.concat’,
imported from ‘Data.Foldable’ at Main.hs:5:1-20
Main.hs:10:96:
Ambiguous occurrence ‘replicate’
It could refer to either 'Data.List.replicate'
imported from ‘Data.List.replicate’ at Main.hs:3:1-16
(and originally defined in ‘GHC.List’)
or ‘Data.Sequence.replicate’,
imported from ‘Data.Sequence’ at Main.hs:4:1-20
Main.hs:10:96:
Ambiguous occurrence ‘elem’
It could refer to either 'Data.List.elem'
imported from ‘Data.List’ at Main.hs:3:1-16
(and originally defined in ‘GHC.List’)
or ‘Data.Foldable.elem’,
imported from ‘Data.Sequence’ at Main.hs:5:1-20
Main.hs:17:48:
Not in scope: pos’
Perhaps you meant ‘pos’ (line 14)
Main.hs:43:37: Not in scope: ‘nums’
module Main where
import Data.List
import Data.Sequence
import Data.Foldable
import Control.Lens
data Game = G Int Int Int [Int] [Bool] [Bool] [Bool] [Int] [Property] Int
data Property = Int | E | A | D
displayRow game@(G rows cols nplayers pos e a d drolls props turn) n = unlines [ '+' : concat (replicate n "---+") , '|' : concat (replicate n " |")]
display game@(G 0 cols nplayers pos e a d drolls props turn) = ""
display game@(G rows cols nplayers pos e a d drolls props turn) = (displayRow game cols) ++ display (G (rows - 1) cols nplayers pos e a d drolls props turn)
go game@(G rows cols nplayers pos e a d drolls props 0) _ = display game
go game@(G rows cols nplayers pos e a d drolls props turn) i
| elem (rows*cols) pos = display game
| nplayers == i = go (G rows cols nplayers pos e a d drolls props (turn - 1)) 0
| otherwise = go (move (G rows cols nplayers pos' e a d (tail drolls) props turn) i roll) (i + 1) where
roll = if d!!i then 2*(head drolls) else (head drolls)
move (G rows cols nplayers pos e a d drolls props turn) i j = case (elemIndex posij pos) of
Just k -> (move (G rows cols nplayers pos' e' a' d' drolls props turn) k 1)
Nothing -> (G rows cols nplayers pos' e' a' d' drolls props turn)
where
posij = if (pos!!i + j) > rows*cols then rows*cols else pos!!i + j
pos'
| props!!posij > posij = if e!!i then pos & ix i .~ (2*(props!!posij) - posij) else pos & ix i .~ (props!!posij)
| props!!posij < posij = if a!!i then pos & ix i .~ posij else pos & ix i .~ (props!!posij)
| otherwise = pos & ix i .~ posij
e'
| props!!posij > posij = if e!!i then e & ix i .~ False else e
| props!!posij == E = e & ix i .~ True
| otherwise = e
a'
| props!!posij < posij = if a!!i then a & ix i .~ False else a
| props!!posij == A = a & ix i .~ True
| otherwise = a
d' = if (props!!posij) == D then (d & ix i .~ True) else (d & ix i .~ False)
instance Show Game where
show game@(G rows cols nplayers pos e a d drolls props turn) = go game 0
build (l:ls) = build' (G 0 0 0 [] [] [] [] [] [] 0) (l:ls) where
build' game (l:ls) = build' (update game l) ls
build' game [] = game
update (G rows cols nplayers pos e a d drolls props turn) s = case (words s) of
"board":l -> G (nums!!0) (nums!!1) nplayers pos e a d drolls [i | i <- [0..(nums!!0)*(nums!!1)]] turn
"players":l -> G rows cols (nums!!0) [0 | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] drolls props turn
"dice":l -> G rows cols nplayers pos e a d (cycle nums) props turn
"ladder":l -> G rows cols nplayers pos e a d drolls (props & ix (nums!!0) .~ (nums!!1)) turn
"snake":l -> G rows cols nplayers pos e a d drolls (props & ix (nums!!0) .~ (nums!!1)) turn
"powerup":"escalator":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const E) props) turn
"powerup":"antivenom":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const A) props) turn
"powerup":"double":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const D) props) turn
"turns":l -> G rows cols nplayers pos e a d nums props (turn + (nums!!0)) where
nums = map read l :: [Int]
readFrom input = build (lines input)
main = do
input <- getContents
putStr $ show $ readFrom input
最佳答案
这是为保持理智而格式化的代码,并添加了类型签名:
module Main where
import Data.Foldable
import Control.Lens
data Game = G Int Int Int [Int] [Bool] [Bool] [Bool] [Int] [Property] Int
data Property = Int | E | A | D
displayRow :: Game -> Int -> String
displayRow game@(G rows cols nplayers pos e a d drolls props turn) n = unlines [ '+' : concat (replicate n "---+") , '|' : concat (replicate n " |")]
display :: Game -> String
display game@(G 0 cols nplayers pos e a d drolls props turn) = ""
display game@(G rows cols nplayers pos e a d drolls props turn) = (displayRow game cols) ++ display (G (rows - 1) cols nplayers pos e a d drolls props turn)
go :: Game -> Int -> String
go game@(G rows cols nplayers pos e a d drolls props 0) _ = display game
go game@(G rows cols nplayers pos e a d drolls props turn) i
| elem (rows*cols) pos = display game
| nplayers == i = go (G rows cols nplayers pos e a d drolls props (turn - 1)) 0
| otherwise = go (move (G rows cols nplayers pos' e a d (tail drolls) props turn) i roll) (i + 1)
where
roll = if d!!i then 2*(head drolls) else (head drolls)
move :: Game -> Int -> Int -> Game
move (G rows cols nplayers pos e a d drolls props turn) i j = case (elemIndex posij pos) of
Just k -> (move (G rows cols nplayers pos' e' a' d' drolls props turn) k 1)
Nothing -> (G rows cols nplayers pos' e' a' d' drolls props turn)
where
posij = if (pos!!i + j) > rows*cols then rows*cols else pos!!i + j
pos'
| props!!posij > posij = if e!!i then pos & ix i .~ (2*(props!!posij) - posij) else pos & ix i .~ (props!!posij)
| props!!posij < posij = if a!!i then pos & ix i .~ posij else pos & ix i .~ (props!!posij)
| otherwise = pos & ix i .~ posij
e'
| props!!posij > posij = if e!!i then e & ix i .~ False else e
| props!!posij == E = e & ix i .~ True
| otherwise = e
a'
| props!!posij < posij = if a!!i then a & ix i .~ False else a
| props!!posij == A = a & ix i .~ True
| otherwise = a
d' = if (props!!posij) == D then (d & ix i .~ True) else (d & ix i .~ False)
instance Show Game where
show game@(G rows cols nplayers pos e a d drolls props turn) = go game 0
build :: [String] -> Game
build (l:ls) = build' (G 0 0 0 [] [] [] [] [] [] 0) (l:ls)
where
build' game (l:ls) = build' (update game l) ls
build' game [] = game
update :: Game -> String -> Game
update (G rows cols nplayers pos e a d drolls props turn) s = case (words s) of
"board":l -> G (nums!!0) (nums!!1) nplayers pos e a d drolls [i | i <- [0..(nums!!0)*(nums!!1)]] turn
"players":l -> G rows cols (nums!!0) [0 | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] [False | _ <- [1..(nums!!0)]] drolls props turn
"dice":l -> G rows cols nplayers pos e a d (cycle nums) props turn
"ladder":l -> G rows cols nplayers pos e a d drolls (props & ix (nums!!0) .~ (nums!!1)) turn
"snake":l -> G rows cols nplayers pos e a d drolls (props & ix (nums!!0) .~ (nums!!1)) turn
"powerup":"escalator":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const E) props) turn
"powerup":"antivenom":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const A) props) turn
"powerup":"double":l -> G rows cols nplayers pos e a d drolls (over (elements (flip elem nums)) (const D) props) turn
"turns":l -> G rows cols nplayers pos e a d nums props (turn + (nums!!0))
where
nums = map read l :: [Int]
readFrom :: String -> Game
readFrom input = build (lines input)
main :: IO ()
main = do
input <- getContents
putStr $ show $ readFrom input
Data.List
和
Data.Sequence
引起的,它们都提供了与Prelude中的函数同名的函数,并且彼此相互命名,因此它们的名称冲突且名称不明确。
关于haskell - 修正错误(Haskell)简单的蛇棋游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43266323/
我正在努力实现以下目标, 假设我有字符串: ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ) ) ) ) ) 我想编写一个正则
给定: 1 2 3 4 5 6
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
大家好,我卡颂。 Svelte问世很久了,一直想写一篇好懂的原理分析文章,拖了这么久终于写了。 本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一
身份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后一位为数字或者大写字母”X“。 与之匹配的正则表达式: ?
我们先来最简单的,网页的登录窗口; 不过开始之前,大家先下载jquery的插件 本人习惯用了vs2008来做网页了,先添加一个空白页 这是最简单的的做法。。。先在body里面插入 <
1、MySQL自带的压力测试工具 Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等
Go语言语法类似于C语言,因此熟悉C语言及其派生语言( C++、 C#、Objective-C 等)的人都会迅速熟悉这门语言。 C语言的有些语法会让代码可读性降低甚至发生歧义。Go语言在C语言的
我正在使用快速将 mkv 转换为 mp4 ffmpeg 命令 ffmpeg -i test.mkv -vcodec copy -acodec copy new.mp4 但不适用于任何 mkv 文件,当
我想计算我的工作簿中的工作表数量,然后从总数中减去特定的工作表。我错过了什么?这给了我一个对象错误: wsCount = ThisWorkbook.Sheets.Count - ThisWorkboo
我有一个 perl 文件,用于查看文件夹中是否存在 ini。如果是,它会从中读取,如果不是,它会根据我为它制作的模板创建一个。 我在 ini 部分使用 Config::Simple。 我的问题是,如果
尝试让一个 ViewController 通过标准 Cocoa 通知与另一个 ViewController 进行通信。 编写了一个简单的测试用例。在我最初的 VC 中,我将以下内容添加到 viewDi
我正在绘制高程剖面图,显示沿路径的高程增益/损失,类似于下面的: Sample Elevation Profile with hand-placed labels http://img38.image
嗨,所以我需要做的是最终让 regStart 和 regPage 根据点击事件交替可见性,我不太担心编写 JavaScript 函数,但我根本无法让我的 regPage 首先隐藏。这是我的代码。请简单
我有一个非常简单的程序来测量一个函数花费了多少时间。 #include #include #include struct Foo { void addSample(uint64_t s)
我需要为 JavaScript 制作简单的 C# BitConverter。我做了一个简单的BitConverter class BitConverter{ constructor(){} GetBy
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是 Simple.Data 的新手。但我很难找到如何进行“分组依据”。 我想要的是非常基本的。 表格看起来像: +________+ | cards | +________+ | id |
我现在正在开发一个 JS UDF,它看起来遵循编码。 通常情况下,由于循环计数为 2,Alert Msg 会出现两次。我想要的是即使循环计数为 3,Alert Msg 也只会出现一次。任何想法都
我是一名优秀的程序员,十分优秀!