Send your feedback or ask for help here!
I can not succeed in only one test = digit manipulation II
Could someone explain to the dst instruction with an example please ?
→ DST ACC DAT with ACC = 0 and DAT = 9, what are the values of ACC ans DAT after ?
1 9 4 mov x0 dat dst acc dat mov acc x1 mov dat x1
Thank you @Yatech !
If I try, in the test herebelow - please correct me!:
0 9 0
mov x0 acc → acc = 0
mov x0 dat → dat = 9
dst acc dat → acc = 90 dat = 9
dst 1 dat → acc = 990 dat = 9
dst 2 dat –>acc = 9900=>999 dat = 9
mov acc x1 print 999
mov x0 acc → acc=9990 =>999 dat=9
dst 2 dat –>acc=0999 dat=9
mov acc x1 print 999 Arrgh!no
My algorithm (which passed all tests ) does it the following way:
mov x0 acc // acc: 0, dat: 0 mov x0 dat // acc: 0, dat: 9 dst acc dat // acc: 9, dat: 9 dst 1 dat // acc: 99, dat: 9 dst 2 dat // acc: 999, dat: 9 mov acc x1 // acc: 999, dat: 9 mov x0 acc // acc: 0, dat: 9 dst 2 dat // acc: 900, dat: 9 mov acc x1 // acc: 900, dat: 9
Output: 999 900
THANK ! YOU !
@Yatech : you saved me
score = 100%
Quite a fun challenge, enjoyed it.
Hi, seems to have many errors in the statement :
MCxxxx Language official documentation : https://usermanual.wiki/Document/SHENZHENIOManual.736522646/view
=> the link doesn’t work
- not : If the value in acc is 0, store a value of 100 in acc. Otherwise, store a value of
=> the end of the sentence is missing
| acc | Instruction | acc’ |
| 596 | dst 0 7 | 597 |
| 596 | dst 1 7 | 576 |
| 596 | dst 2 7 | 796 |
=> shouldn’t it be the opposite ? like
| 596 | dst 0 7 | 796 | and
| 596 | dst 2 7 | 597 |
- tcp R/I R/I : Compare the value of the first operand with the value of the of the second operand
=> “of the” is in double
596 is a number, least significant digit’s place is on the right
End of line not wrapped somehow. Drag Statement<->Code vertical divider to the right
My code passes all of the provided tests, but when I submit, the test “Labels, jumps and unnecessary text (Validator)” fails. Do you have any idea of the differences between the normal test and the validator test?
BTW, this was fun to code.
You’re right, thanks for the clarifications
Very enjoyable way to learn the basics of an “assembly like” language !
I took a look to the validator…try the following input (it is the same as test but with another comment altmost similar to validator one) :
1 2 11 mov x0 dat mov dat acc # mov acc dat ... useless (╯°□°）╯︵ ┻━┻ /// jmp end mov dat x1 mult: mul dat jmp ending end: jmp mult ending: mov acc x1
Expected result :
Thanks @b0n5a1, but my code works well on your example, I get the expected result. I remove everything after a # in a line of code, whatever is following the #. I don’t think the problem is about comment (but maybe). And I don’t see any problem in my jmp management (and my program works well on other validators). I don’t have any idea of what’s not working…
I am not able to understand why on the 10th test case called “Overflow !!!”, the result should remain -999 and 999 as if both the subtraction and the addition should not be effective.
The instruction of the test case is:
“mov x0 acc” ==> “Put the next input in acc” so the “acc” becomes “-999”
“sub 50” ==> “Subtract 50 from the acc and store it to acc”, so -999 - 50 = -1049 which is the new “acc” value
“mov acc x1” ==> “Output the acc”, so my 1st output is -1049 and not -999 which is the expected one
What am I missing ?
Registers can store integer values between -999 and 999, inclusive. If an arithmetic operation would produce a result outside this range, the closest allowed value is stored instead. For example, if acc contains the value 800 and the instruction add 400 is executed, then the value 999 will be stored in acc.
I really missed all that part. Thanks a lot
Hi all !
Fun exercise, but i’m stuck on the 13th validation test (not IDE tests but submission tests) that keeps failing while all IDE tests are green ; quite frustrating since i have no idea what can go wrong :-/
If someone could provide a test similar as the validator’s one, without spoiling the real one, i would be very grateful
Ok, found my mistake, it was a stupid error in
tcp implementation, that inverted results flags for greater and equal cases.
Thus, the IDE tests seems insufficient, since they allow validation with such a huge error.
I would suggest to replace the 13 test by something like below, inserting static outputs between tests to ensures that the rigth values are generated by the right tests :
1 0 12 mov x0 dat tcp dat -1 + mov 1 x1 - mov -1 x1 tcp dat 0 mov 5 x1 + mov 1 x1 - mov -1 x1 tcp dat 1 mov 5 x1 + mov 1 x1 - mov -1 x1
with expected output
1 5 5 -1
OK, try this one :
1 7 10 # Hello jmp test mov acc dat another_test: add 10 jmp hello test: mov x0 acc jmp another_test hello: mov acc x1
Expected result :