Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse

Værsågod. Men såvidt jeg kan se var det jeg som var her og svarte på spørsmålene, ikke du. Videre er det ingenting som gjør kvaliteten lavere enn vage spørsmål, "nei jeg vil ikke gjøre det sånn" og "nvm, fant en løsning".

 

edit: shoutout to matsemann som faktisk også har bidratt i løpet av de siste 20 postene.

Endret av Lycantrophe
  • Liker 3
Lenke til kommentar

At "folk" ikke kan tukle med medlemmene i structen. Jeg innser at jeg kan gjøre medlemmene private, men da får jeg ikke tilgang til dem selv, uten å bruke friend. Og uansett er de synlige, selv om de ikke kan aksesseres.

Private variabler er ikke synlige utenfra i det hele tatt. Har du misforstått noe her?
Lenke til kommentar

"nvm, fant en løsning"

Jeg skrev jo at løsningen ble å gjøre den opaque og bruke en init-funksjon. Jeg trenger ikke å poste hele programmet på grunn av det.

 

 

At "folk" ikke kan tukle med medlemmene i structen. Jeg innser at jeg kan gjøre medlemmene private, men da får jeg ikke tilgang til dem selv, uten å bruke friend. Og uansett er de synlige, selv om de ikke kan aksesseres.

Private variabler er ikke synlige utenfra i det hele tatt. Har du misforstått noe her?

 

De er synlige for den som leser koden i header-fila.
  • Liker 1
Lenke til kommentar

Jeg skrev jo at løsningen ble å gjøre den opaque og bruke en init-funksjon. Jeg trenger ikke å poste hele programmet på grunn av det.

Nei, det hadde holdt å poste den relevante delen.

 

Det er uansett en sub-par C-tier-løsning.

 

De er synlige for den som leser koden i header-fila.

Hvorfor gjør det noe?

 

Dessuten snakker du om en "ytelsesspesifikasjon". Utdyp gjerne dette, fordi nå kan du ikke stack-alloc'e (fornuftig, anyways, det går ann å hacke seg rundt men -det- er stygt det), som gjør at ytelsen din kommer til å droppe hardt.

Endret av Lycantrophe
Lenke til kommentar

 

Jo, en ting - å komme med flåsete, arrogante eller nedlatende svar. Det er ofte det som forårsaker svar som "nvm, fant en løsning".

Antyder du at jeg har vært flåsete eller nedlatende?

 

Synes du har en stil som kan virke provoserende i hvertfall. Et eksempel kan være denne posten - det er ikke alle som ser at det er en smiley nederst.

Lenke til kommentar

Det å skrive kode for å lære er fint (jeg eksperimenterer med sånt hele tiden), men desto større grunn til å si hva du vil oppnå. Med mindre poenget er å finne ut hvordan man gjør X og det er målet i seg selv. Isåfall bør du nevne det og.

 

Spørs hvor mye du faktisk har lært om du ikke tenker to ganger på idéen. Men men. Det er din tid.

  • Liker 1
Lenke til kommentar

Apropos bra kode og alt det der:

På slutten av et powershell-skript sjekker jeg om det fins like filer i en gitt mappe inkl undermapper, og sletter duplikatet. Jeg er i grunn fornøyd med min fungerende løsning:

$hasharray = @()
Get-ChildItem -File D:\Pictures -Recurse | ForEach-Object{
    $hash = (Get-FileHash $_.FullName).hash
    if ($hasharray -contains $hash)
        {
            Remove-Item $_.FullName -Force           
        }
    else
        {
            $hasharray += $hash
        }
    }

Hvis filhashen fins i arrayet, slettes fila. Hvis ikke, legges hashen til i arrayet.

Fins det bedre måte å gjøre det på?

Endret av Khaffner
Lenke til kommentar

Tjah, det er i grunn helt greit. Det jeg kanskje hadde gjort hadde vært å bygge to strukturer med objekter - en med de du beholder og en med de som skal slettes. Det gjør at du kan printe rapporter etc, spørre om bekreftelse etc.

 

Om du har veldig mange filer hadde jeg sett etter en bedre lookup-struktur enn array, men det ern å så. Jeg hadde også vurdert å fjerne else-en og gjort += uansett, bare fordi jeg misliker den typen conditionals.

Lenke til kommentar

Jeg er ikke fremmed for å provosere når ting blir dumt.

Vet det, det var derfor jeg ikke postet mer kode. Jeg skal holde meg for god til å be deg tygge på det. ;)

 

Hvordan ser det under ut?

 

http://www.cis.upenn.edu/~cis194/hw/01-intro.pdf

 

{-# OPTIONS_GHC -Wall #-}
module HW01 where

-- Exercise 1 -----------------------------------------

-- Get the last digit from a number
lastDigit :: Integer -> Integer
lastDigit n = n `mod` 10

-- Drop the last digit from a number
dropLastDigit :: Integer -> Integer
dropLastDigit n = n `div` 10

-- Exercise 2 -----------------------------------------

toRevDigits :: Integer -> [Integer]
toRevDigits n 
    | n < 1     = []
    | otherwise = lastDigit n:toRevDigits (dropLastDigit n)

-- Exercise 3 -----------------------------------------

-- Double every second number in a list starting on the left.
doubleEveryOther :: [Integer] -> [Integer]
doubleEveryOther [] = []
doubleEveryOther (x:y:zs) = x : y*2 : doubleEveryOther zs
doubleEveryOther x = x

-- Exercise 4 -----------------------------------------

-- Calculate the sum of all the digits in a single Integer >= 0
sumDigitsNum :: Integer -> Integer
sumDigitsNum n = sum (toRevDigits n)

-- Calculate the sum of all the digits in every Integer >= 0
sumDigits :: [Integer] -> Integer
sumDigits l = sum (map sumDigitsNum l)


-- Exercise 5 -----------------------------------------

-- Validate a credit card number using the above functions.
luhn :: Integer -> Bool
luhn n = sumDigits (doubleEveryOther (toRevDigits n)) `mod` 10 == 0

 

-- CIS 194, Spring 2015
--
-- Test cases for HW 01

module HW01Tests where

import HW01
import Testing

-- Exercise 1 -----------------------------------------

testLastDigit :: (Integer, Integer) -> Bool
testLastDigit (n, d) = lastDigit n == d

testDropLastDigit :: (Integer, Integer) -> Bool
testDropLastDigit (n, d) = dropLastDigit n == d

ex1Tests :: [Test]
ex1Tests = [ Test "lastDigit test" testLastDigit
             [(123, 3), (1234, 4), (5, 5), (10, 0), (0, 0)]
           , Test "dropLastDigit test" testDropLastDigit
             [(123, 12), (1234, 123), (5, 0), (10, 1), (0,0)]
           ]

-- Exercise 2 -----------------------------------------

testToRevDigits :: (Integer, [Integer]) -> Bool
testToRevDigits (argument, expected) = toRevDigits argument == expected

ex2Tests :: [Test]
ex2Tests =  [Test "toRevDigits test" testToRevDigits
                [(1234, [4,3,2,1]), (0,[]), (1, [1]), (941234, [4,3,2,1,4,9])]
            ]

-- Exercise 3 -----------------------------------------

testDoubleEveryOther :: ([Integer], [Integer]) -> Bool
testDoubleEveryOther (arg, expected) = doubleEveryOther arg == expected

ex3Tests :: [Test]
ex3Tests =  [Test "doubleEveryOther test" testDoubleEveryOther
                [
                    ([1,2,3], [1,4,3]),
                    ([9,7,3,2], [9, 14, 3, 4]),
                    ([], []),
                    ([2], [2])
                ]
            ]

-- Exercise 4 -----------------------------------------

testSumDigits :: ([Integer], Integer) -> Bool
testSumDigits (arg, expected) = sumDigits arg == expected

ex4Tests :: [Test]
ex4Tests =  [Test "sumDigits test" testSumDigits
                [
                    ([], 0),
                    ([1], 1),
                    ([12], 3),
                    ([1,2,9], 12),
                    ([13935, 23, 6, 2, 7], 41)
                ]
            ]

-- Exercise 5 -----------------------------------------

testLuhn :: (Integer, Bool) -> Bool
testLuhn (arg, expected) = luhn arg == expected

ex5Tests :: [Test]
ex5Tests =  [Test "luhn Test" testLuhn
                [
                    (5594589764218858, True),
                    (1234567898765432, False)
                ]
            ]

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...