この課題は数学に触発されて事実です。プログラミングではありません。
階乗、またはファクトの数学的表記は感嘆符!です。感嘆符も、not多くのプログラミング言語で共通の記号です。
チャレンジ:
数字と文字を含む文字列+ !を入力として受け取り、以下を出力します。
感嘆符の前にあるものはすべて数式として評価されるべきであり、そう2+2なります4。
単一感嘆符の後にすべてが付属品として追加されなければならないので、その前にあるものは何でもへ:2+2!5与えるべきである45、なぜなら2+2=4、および5アクセサリーです。2+2!5+5与える必要があります410。
ので!意味もnot、だ何もない事実の後に付属品はすべきではない追加されます。だから、2+2!!5与えるべきで4あるため、5付属品ではありません。さて、与えるnot(not(true))==trueので。を与える必要があります:、次に、階乗とが続きます。最初は事実ではありませんが、別の感嘆符の後にあり、したがって、これも事実です。2+2!!!5452+2!!5!5+54102+2=4!5!5+555+5
明確化:
- 感嘆符は
+どちらの側にも隣接しません。 +数字の先行はありません(それは5、ではありません+5)。- 最初のの前の式の結果である場合は、オプションで先行ゼロを含めることができます
!。両方とも4、04入力として受け入れられる出力:0+0!4
エグゼクティブサマリー:各合計を評価します(!区切り記号として扱います)。次に、!(文字列の先頭から数えて)偶数個の後に現れるすべての数字を破棄します。次に、すべて削除します!。
テストケース:
!
<- Empty string
5
5
12!
12
!87
87
!!5
<- Empty string
5+5!2+2
104
5+5!!2+2
10
1!2!3!4!5!6!7!8!9
12468
10+10!!2+2!!3+3!4+4
208
2!!3!5
25
2!!3!5!7
25
10!!!!!!!5
105
これはコードゴルフなので、バイト数(各言語で)が最も短いコードが優先されます!説明を強くお勧めします!
25(追加のテストケースを参照)。さらに重要なの2!!3!5!7は25、の!残りの数が偶数であるため、がまだ与え7られることです(そのため、数値の前にある実行を数えるだけでなく、その!左側すべてを数えます)。
Rowますか?