我試圖解決以下問題:方案 - 如何將數據結構應用於2個羅馬數字對象(字母和數值)的組合以生成2個字符的羅馬數字?
寫稱爲
form-rn
功能,消耗2個Roman-Numeral
對象(digit1
和digit2
),併產生由digit1
和digit2
從讀出的值表示的兩個字符Roman-Numeral
左到右。字符串值digit1
和digit2
必須是單個字母(I,V,X,L,C,D或M之一)。例如:
(form-rn (make-Roman-numeral "C" 100) (make-Roman-numeral "C" 100))
產生
(make-Roman-numeral "CC" 200)
,和(form-rn (make-Roman-numeral "X" 10) (make-Roman-numeral "L" 50))
產生
(make-Roman-numeral "XL" 40)
。
到目前爲止,我試了幾件事情:
(define II (make-Roman-numeral "II" 2))
(define IV (make-Roman-numeral "IV" 4))
這是在試圖產生羅馬數字的組合,但我意識到,這可能不是我應該採取的辦法。
(make-Roman-numeral 'I 1)
(make-Roman-numeral 'V 5)
我想也許如果我不得不分別定義每個羅馬數字,但它不應該像一個單個字符「I」它應該像「IV」
(define (form-rn digit1 digit2)
(cond
[(> digit1 digit2) (+ (Roman-numeral-value digit1) (Roman-numeral-value digit2))]))
我一個組合考慮制定條件,因爲問題說如果第一個符號大於另一個,那麼這兩個符號相加,但如果第二個符號大於第一個符號,則較大符號的值減去較小符號的值。
嗨!歡迎來到Stack Overflow。它看起來像你試圖獲得幫助與家庭作業問題或類似的練習。這是允許的,但是SO不是代碼寫入服務,所以爲了獲得幫助,你應該展示一個嘗試解決這個問題的方法。發佈您迄今爲止所嘗試的內容,並且[關注如何提出問題的信息,請參閱幫助中心](http://stackoverflow.com/help/how-to-ask)。 – 2015-02-09 06:28:05
「羅馬數字」結構的字段名稱是什麼?我看到第二個字段是「價值」,但第一個字段的名稱是什麼? – 2015-02-09 06:40:23
第一個字段是'letters' – 2015-02-09 06:42:38