錯誤消息-expects a number as 1st argument, given 'hearts
球拍初學者錯誤解決方案?
我必須不使用平等代碼?在溶液中 我的代碼看起來像這樣
(define-struct card(suit value))
(define (card=? str-1 str-2)
(cond
[(and(=(card-suit str-1)(card-suit str-2))
(=(card-value str-1)(card-value str-2)))true]
[else false]))
(check-expect(card=?(make-card 'hearts 3) (make-card 'hearts 3))true)
編輯 - 這個問題是這樣的進一步信息
在紙牌遊戲「瘋狂八」球員輪流上場的中心一張名片,上面的目標成爲第一個沒有任何牌的球員。玩家必須使用與中心牌的套裝相匹配的卡牌,但有兩個例外。首先,玩家可以改爲玩牌 匹配中心牌的價值。第二,八分是「狂野」,所以一個玩家總是可以玩八分之一的 。當一名球員打八分球時,他們會說出一套西裝的名字。即使沒有,這八人也會被視爲 。例如,如果玩家玩黑桃八張,並且 說「心」,那麼下一張玩牌必須是「心牌」(或另外八張)。 玩家可以拿牌,而不是玩牌。如果他們可以打新卡,他們可以這樣做,否則這是他們輪到的結局。 當一名牌手用完牌時,他們贏得了牌局。獲勝玩家根據其他玩家持有的卡牌獲得積分 。
對於這個問題,我們會在使用卡片式表示卡: (define-struct card (suit value)) ;; A Card is a (make-card Sym Nat) ;; requires: suit is one of ’hearts, ’diamonds, ’clubs, or ’spades ;; value between 1 and 13, using 11 for Jack, 12 for Queen, and 13 for King.
注:我們是代表這些卡與計算機,所以它是很容易真正改變 黑桃八進八當它被玩的心!因此,在以下 函數中,即使中心卡爲八位,您也可以假定當前套裝與 中心中當前卡的套數相同。
A)
寫一個函數card=?
消耗兩張牌結構,如果 它們表示相同的撲克牌生產真,否則爲假。您的解決方案中不得使用equal?
。例如,(card=? (make-card ’hearts 3) (make-card ’hearts 3))
產生真
B)
寫功能crazy-count
消耗卡的結構和電流 中心卡的列表,併產生在列表中可以合法是 卡結構的數量在中心玩。
但''你好'''是一個字符串在這裏我有符號''心臟'所以它不起作用 – kaminey
'平等?'對所有看起來相同的東西都適用,包括符號,但'eq?'是明顯的選擇。 Se http://stackoverflow.com/q/16299246/1565698 – Sylwester