Kezdőoldal » Számítástechnika » Programozás » Hogyan kell megoldani a...

Hogyan kell megoldani a következő feladatot Haskellben?

Figyelt kérdés

a feladat: [link]


Válaszotokat előre is köszönöm!



2017. máj. 9. 08:57
 1/4 anonim ***** válasza:

Tudod, hogy ez nem így szokott menni :)


Meddig jutottál? Hol akadtál el? Mutasd az eddigi kódod. Hol van probléma pontosan? Melyik rész nem akar menni?

2017. máj. 9. 08:59
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Hat problámam az több helyen is van ( most az emptylineoptionnal), de a kódom eddig így néz ki:

kód1: [link]


kód2: [link]

2017. máj. 9. 09:22
 3/4 anonim ***** válasza:

Külön gratulálnék a képként megosztásért, hogy még véletlenül se tudjuk kipróbálni, módosítani.


Hogy akar valaki szoftverfejlesztő lenni, ha ennyire fogalmatlan?

2017. máj. 9. 09:38
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

type Cell = Char

type Table = [[Cell]]

type ClueLine = [Int]

type Clues = ([ClueLine], [ClueLine])


unknown = 'u'

empty = 'e'

full = 'f'


duckClues = (duckRows, duckCols) :: Clues

poundClues = (poundRows, poundCols) :: Clues


duckRows = [[3], [5], [4,3], [7], [5], [3], [5], [1,8], [3,3,3], [7,3,2], [5,4,2], [8,2], [10], [2,3], [6]]


duckCols = [[3], [4], [5], [4], [5], [6], [3,2,1], [2,2,5], [4,2,6], [8,2,3], [8,2,1,1], [2,6,2,1], [4,6], [2,4], [1]]


poundRows = [[4], [2,1], [1,2], [2,2], [2], [8], [2], [8], [2], [2], [2,2,2], [6,3], [2,5,3], [2,2,6], [4,4]]


poundCols = [[2],[4],[2,1],[1,1,2,1],[1,1,4],[11],[12],[2,1,1,2],[1,1,1,3],[1,1,1,2],[1,1,1,2],[3,3],[2,3],[3],[2]]


yinYangClues :: Clues

yinYangClues = (yinYangRows, yinYangCols)


yinYangRows = [[8],[4,4],[2,6],[1,3,2],[3,3],[8],[6],[2,5],[1,2,4],[2,5],[4,5],[8]]


yinYangCols = [[4,4],[3,3],[2,2],[2,2,2],[1,3,2,1],[1,4,2],[7,3],[3,7],[2,6],[10],[8],[4]]


flowerClues :: Clues

flowerClues = (flowerRows, flowerCols)


flowerRows = [[2,2],[1,1,1],[1,1,1],[1,5,2],[1,2,2,1],[1,5,1],[2,1,3],[2,2],[1],[2,1,2],[3],[1]]


flowerCols = [[2],[1,1],[2,1],[1,3,1,1],[1,3,1,1],[3,2,1],[1,3,5],[1,3,1,1],[2,1,1],[1,1,1],[1,1],[2]]


showCell :: Cell -> Char

showCell a

| a == 'u' = '?'

| a == 'e' = ' '

| a == 'f' = '#'


showRow :: [Cell] -> String

showRow r = '|' : addCell r where

addCell [] = "|\n"

addCell (x:xs) = showCell x : addCell xs


showTable :: Table -> String

showTable [] = []

showTable (x:xs) = showRow x ++ showTable xs


empties :: Int -> [Cell]

empties a

| a <= 0 = []

| otherwise = 'e' : empties (a-1)


fulls :: Int -> [Cell]

fulls a

| a <= 0 = []

| otherwise = 'f' : fulls (a-1)


placeOneBlock :: Int -> Int -> [[Cell]]

placeOneBlock f e = options e where

options 0 = []

options a

| length(empties (e-a) ++ fulls f ++ empties (a-f)) > e = []

| otherwise = (empties (e-a) ++ fulls f ++ empties (a-f)) : options (a-1)


emptyLineOptions :: ClueLine -> Int -> [[Cell]]

emptyLineOptions [] 0 = [[]]

emptyLineOptions [] x = [empties x]

emptyLineOptions (x:xs) n

| length (x:xs) == 1 = placeOneBlock x n

| sum (x:xs) + length (x:xs) - 1 > n = []

| otherwise = (fulls x : empties 1 : emptyLineOptions xs (n-x-1)) : emptyLineOptions xs n


isMatching :: Cell -> Cell -> Bool

isMatching a b

| a == 'f' && b /= 'f' = False

| a == 'e' && b /= 'e' = False

| otherwise = True


combineOption :: Cell -> Cell -> Cell

combineOption 'f' 'f' = 'f'

combineOption 'e' 'e' = 'e'

combineOption _ _ = 'u'

2017. máj. 9. 10:21

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!