Hmm,
I thought I understand this idea but I do not.
I did this in the playground :
| answer |
answer := Key5Solver new solver.
��^ answer Result
You can't access the Result variable inside like that.�� You need a accessor method to do it for you like this...
Key5Solver>>result
�� �� ��^ Result
��
But also, you never set the value of Result, see below...
class :
Object subclass: #Key5Solver
������ instanceVariableNames: ''
������ classVariableNames: 'Result'
������ package: 'AdventOfCode2015-Day4 - Part1'
Thats good.�� Actually I amend my suggestion from yesterday. An instance variable would do.
I've renamed your method here...
Key5Solver>>startCalculation
zeros := '000'.
zerosSize := zeros�� size.
count := 0.
[������
������ [������ candidate := secret , count printString.
�������������� ((MD5 hashMessage: candidate) hex first: zerosSize) =
zeros
������ ] whileFalse:
�������������� [������
���������������������� count := count + 1.
�������������� ].
�� �� �� �� �� ��Result := count�� �� "<<<<< need to store the result of the calculation"��
�� �� �� �� �� ��self inform: 'Mining calculation is complete.�� You can now ask me for the result'.
������
] forkAt: 35 named: 'Mining'.
but still I do not see the answer.
With the above, in Playground you can do...
solver :=��Key5Solver new startCalculation�� .�� ��"<<<evaluate this line only"
"wait for information message to appear"
solver result inspect�� ��"<<<<now you can evaluate this line to get the answer"
cheers -ben
��
Maybe I have to go for the blocking answer.
Roelof
Op 9-12-2018 om 23:10 schreef Ben Coman:
This is running the calculation in a new Process
(in general terms, our "Process"es are "green-threads").��
You can't "return" values between threads.�� You need to
pass it some other way through a variable.��
If you put that code into an instance method, then you
could store the result in a class-variable.
Change the Transcript to ```self inform: 'FInished' ```��
and then have a different method you call
after you see that to return the answer.
cheers -ben
Hello,
I got this code from the discord channel
secret := 'abcdef'.
zeros := '000'.
zerosSize := zeros size.
count := 0.
[
[ candidate := secret , count printString.
((MD5 hashMessage: candidate) hex first: zerosSize) = zeros
] whileFalse:
[ (count \\ 10000) = 0 ifTrue: [ Transcript crShow: count ].
count := count + 1.
].
Transcript crShow: 'ANSWER = ' , count printString.
] forkAt: 35 named: 'Mining'
but I like that there is no transcipt in the code
so my question is how can I change this part(
Transcript crShow: 'ANSWER = ' , count printString.
)
so it still returns the count.
I tried ^count printstring but that is not allowed
Regards,
Roelof
Op 9-12-2018 om 12:29 schreef Roelof Wobben:
Helllo,
a question about day4 of 2015
is
it right that I can only solve this
bruteforece
so
begin at for example 1 , encode it, check for
5 zeros if found then I have found it
otherwise increase the counter and do it again