Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Whats wrong here

Name: Anonymous 2012-01-19 14:30

Im working on euler # 17 (http://projecteuler.net/problem=17) and wrote this (ugly) scheme code to solve it, nvals takes the upper bound number (999 in this case). It keeps giving the wrong aswer though, any help?

[code]


(define (nvals x)
  (cond
    ((= x 0) 0)
    (else (+ (nval x) (nvals (- x 1))))))

(define (nval x)
  (cond
    ((= x 0) 4)
    ((< x 13) (digval x))
    ((= x 15) fifteen)
    ((< x 20) (+ (digval (modulo x 10)) teen))
    ((< x 100) (+ (tenval x) (digval (modulo x 10))))
    (else (+ (digval(floor(/ x 100))) hundred wand (eval2 (modulo x 100) )))))
     

     (define (digval x)
  (cond
    ((= x 0) 0)
    ((= x 1) one)
    ((= x 2) two)
    ((= x 3) three)
    ((= x 4) four)
    ((= x 5) five)
    ((= x 6) six)
    ((= x 7) seven)
    ((= x 8) eight)
    ((= x 9) nine)
    ((= x 10) ten)
    ((= x 11) eleven)
    ((= x 12) twelve)
    ))

(define (tenval x)
  (let ((val (floor(/ x 10))))
    (cond
      ((= val 2) twenty)
      ((= val 3) thirty)
      ((= val 4) forty)
      ((= val 5) fifty)
      ((= val 6) sixty)
      ((= val 7) seventy)
      ((= val 8) eighty)
      ((= val 9) ninety)
    )))
   
(define (eval2 x)
  (cond
    ((< x 13) (digval x))
    ((= x 15) fifteen)
    ((< x 20) (+ (digval (modulo x 10)) teen))
    (else (+ (tenval x) (digval (modulo x 10))))))

    
(define wand 3)
(define one 3)
(define two 3)
(define three 5)
(define four 4)
(define five 4)
(define six 3)
(define seven 5)
(define eight 5)
(define nine 4)

(define teen 4)
;special
(define ten 3)
(define eleven 6)
(define twelve 6)
(define fifteen 7)
;special
(define twenty 6)
(define thirty 6)
(define forty 5)
(define fifty 5)
(define sixty 5)
(define seventy 7)
(define eighty 6)
(define ninety 6)
(define hundred 7)
 
[\code]

Name: Anonymous 2012-01-19 14:32

You're not using Haskell.

Name: Anonymous 2012-01-19 14:36

have you got the 'and' ?

Name: Anonymous 2012-01-19 16:31

>>3
yeah its defined as wand (word and) to seperate it from the logical and

Name: Anonymous 2012-01-19 16:33

Ive tried it with many individual values and they seem to work, it just gives an answer that isnt correct when I use 'nvals' to get all to sum all the numbers

Name: Anonymous 2012-01-19 17:19

#include <stdio.h>

int ones[] = {0, 3, 3, 5, 4, 4, 3, 5, 5, 4};
int teens[] = {3, 6, 6, 8, 8, 7, 7, 9, 8, 8};
int tens[] = {0, 3, 6, 6, 5, 5, 5, 7, 6, 6};
int hunds[] = {0, 7};

int main() {
    int sum = 11;
    for(int i = 0; i < 1000; i++) {
        if(i >= 100) sum += hunds[1] + ones[i/100];
        if(i >= 100 && i % 100) sum += 3;
        if(!(i % 10) || (i % 100) > 20) sum += tens[(i % 100)/10];
        if(i % 100 > 10 && i % 100 < 20) sum += teens[i % 100 - 10];
        else sum += ones[i % 10];
    }
    printf("%d\n", sum);
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List