00:00:00 --- log: started forth/14.02.08 01:36:33 --- join: true-grue (~quassel@95-25-39-48.broadband.corbina.ru) joined #forth 01:50:29 --- quit: drobban_ (Changing host) 01:50:29 --- join: drobban_ (~drobban@unaffiliated/robban-/x-2743946) joined #forth 02:13:11 --- quit: mnemnion (Remote host closed the connection) 02:22:23 --- join: fantazo (~fantazo@213.129.230.10) joined #forth 02:35:04 --- quit: kludge` (Ping timeout: 246 seconds) 02:40:23 --- join: kludge` (~comet@unaffiliated/espiral) joined #forth 02:45:42 --- quit: ASau (Remote host closed the connection) 02:48:06 --- join: ASau (~user@p54AFE827.dip0.t-ipconnect.de) joined #forth 02:52:59 --- join: mnemnion (~mnemnion@c-98-210-219-91.hsd1.ca.comcast.net) joined #forth 03:22:12 --- join: tangentstorm (~michal@108.218.151.22) joined #forth 03:56:43 --- join: pvt_petey (~pvt_petey@82-69-79-20.dsl.in-addr.zen.co.uk) joined #forth 05:05:33 --- quit: mnemnion (Remote host closed the connection) 05:19:07 kulp: i checked that NeWS , and yes , it was a bit like my thought 07:21:55 --- join: nighty-_ (~nighty@CPE0026f3096ae8-CM0026f3096ae5.cpe.net.cable.rogers.com) joined #forth 07:30:02 --- join: kumul (~mool@adsl-207-204-134-128.prtc.net) joined #forth 08:52:00 --- quit: pvt_petey (Quit: Computer has gone to sleep.) 09:41:38 --- join: Zarutian (~zarutian@194-144-84-110.du.xdsl.is) joined #forth 10:21:02 --- join: klltkr (~klltkr@unaffiliated/klltkr) joined #forth 10:22:33 --- join: mnemnion (~mnemnion@c-98-210-219-91.hsd1.ca.comcast.net) joined #forth 10:25:50 --- quit: nighty-_ (Remote host closed the connection) 10:27:56 kumool: I thought Mako was a Virtual Machine specification 10:28:50 --- join: dys (~user@2a01:1e8:e100:8296:21a:4dff:fe4e:273a) joined #forth 10:33:32 --- quit: dys (Read error: Connection reset by peer) 10:51:31 --- join: mnemnion_ (~mnemnion@c-98-210-219-91.hsd1.ca.comcast.net) joined #forth 10:53:09 --- quit: mnemnion (Ping timeout: 260 seconds) 10:58:06 --- join: dys (~user@2a01:1e8:e100:8296:21a:4dff:fe4e:273a) joined #forth 11:06:54 i missed the first part, but mako also has an implementation in java, Zarutian 12:00:13 --- join: impomatic_ (~chatzilla@79.251.125.91.dyn.plus.net) joined #forth 12:01:03 --- join: pvt_petey (~pvt_petey@82-69-79-20.dsl.in-addr.zen.co.uk) joined #forth 12:19:03 --- part: impomatic_ left #forth 12:42:50 --- quit: true-grue (Read error: Connection reset by peer) 13:35:45 --- quit: fantazo (Quit: Verlassend) 15:20:56 https://github.com/JohnEarnest/Mako 15:30:43 yunfan_: basicly the opencroquet model of simplified teatime? (all clients interested keep a replica of the forh vm running and just send their inputs to the server which echos them back to everyone with an replica) 15:39:41 multiplayer Forth? 15:40:19 you could do that 15:40:30 make a cross between Forth and the card game Uno 15:40:50 to win you've got to be the one that pops the last item off the stack and no more 16:01:34 --- join: ASau` (~user@p54AFFB99.dip0.t-ipconnect.de) joined #forth 16:05:05 --- quit: ASau (Ping timeout: 260 seconds) 16:10:38 --- quit: karswell (Read error: Connection reset by peer) 16:22:28 gordonjcp: nice idea for a board/card-game but probably not what I or yunfan_ meant 16:30:36 https://github.com/JohnEarnest/VectorLand 16:30:38 , 16:30:39 --- join: karswell (~user@84.93.180.60) joined #forth 16:30:43 ^ multiplayer forth? 16:30:50 oh it's java 16:31:16 * tangentstorm just assumed he'd use mako :) 17:28:51 --- join: drobban (~drobban@78-73-61-250-no187.tbcn.telia.com) joined #forth 17:28:55 --- join: nys (~nys@blk-142-60-139.eastlink.ca) joined #forth 17:29:22 hello there 17:29:45 how would one go about defining a word to test whether two strings are equal? 17:31:30 well... first, that word probably already exists :) 17:31:35 i tried a while ago but i couldn't reduce it to fit my criteria of complexity 17:31:41 of simplicity i mean 17:31:52 well what did you try? 17:32:13 i don't remember but it spanned three lines and used the return stack so >_> 17:33:55 --- quit: drobban_ (*.net *.split) 17:33:55 --- quit: Ethical (*.net *.split) 17:34:56 hrm 17:34:58 i'll give it another go 17:35:43 hmm.. two counted strings or null terminated strings? 17:36:09 I think there such word used in the find word iirc 17:36:25 (at least in eForth) 17:36:31 COMPARE is the standard word 17:37:19 retro has a word to exit a function early if tos is 0: 0;; how would i do that in forth? 17:38:21 two addresses and a length 17:40:20 --- join: Ethical (~sam@139.216.253.31) joined #forth 17:40:50 alright here's one with a 19 word body: : str= 0 do 2dup c@ swap c@ = if 2drop 0 unloop exit then 1+ swap 1+ loop 2drop -1 ; 17:41:04 : 0;; DUP IF ELSE DROP EXIT THEN ; 17:42:32 ok.. that looks like it would work but i'd probably break it into smaller pieces. 17:44:28 : next2 ( aa ab - aa1 ab1 ca cb ) 2dup c@ swap c@ ; \ or something... 17:46:53 --- join: nighty-_ (~nighty@CPE0026f3096ae8-CM0026f3096ae5.cpe.net.cable.rogers.com) joined #forth 17:46:56 hrm 17:48:18 not sure that increments the address i guess.. 17:53:42 i can't seem to get it shorter than 19 17:59:29 --- quit: mnemnion_ (Remote host closed the connection) 18:00:00 so break it into separate words 18:01:50 but i'd still count the bodies of the additionally defined words as well 18:02:44 then you should count the bodies of the words you used, too. 18:03:22 i'll only count words that i defined myself, not standard words 18:03:23 --- quit: pvt_petey (Quit: Computer has gone to sleep.) 18:03:44 then just use 'compare' :) 18:03:53 @_@ 18:04:20 Why aren't we counting bytes instead of words? 18:04:40 Bytes and cycles are the only metrics that really matter. Everything else can be "shuffled around." 18:05:52 words are more or less bytes 18:06:01 or proportional to bytes 18:06:05 and are easier to count 18:07:37 looks like retro's implementation is longer than yours 18:08:18 i know, i checked :( 18:08:19 We're trying to compare two strings? 18:08:40 yes, specifically in the case where you want to check whether they're equal 18:08:50 Stack input? 18:08:50 repeat dup, @, push, 1+, swap, dup, @, push, 1+, pop, dup, pop, !if drop, drop, dup, xor, ; then 0 # 12 m, m, drop, drop, -1 # ; 18:08:55 a1 n1 a2 n2 ? 18:09:01 a1 a2 n 18:09:11 Ok. 18:09:19 unless there's a shorter one for a1 n1 a2 n2 i suppose 18:09:44 Probably not - your way starts with the assumption the lengths are equal, so that doesn't have to be checked. 18:10:22 (but retro uses 0-terminated strings, and that comes early enough in the bootstrap process that it's mostly assembly) 18:10:28 And the rules are that we count bodies of words defined to solve the problem? 18:10:43 yeah 18:12:13 Return a flag on the stack? 0 if equal and 1 otherwise? 18:12:31 Or rather 0 if equal and nonzero otherwise? 18:12:49 hm 18:13:03 the definition i gave does -1 for equal and 0 otherwise 18:13:08 Ok. 18:13:10 That's fine. 18:13:16 i suppose you can use whatever condition makes it the shortest :D 18:13:22 It's just that C returns 0 for equal. 18:13:41 as long as the resulting condition doesn't need you to do any additional computation to use it 18:14:36 additional computation such as doing the actual comparing part of the operation :D 18:19:08 you need to do more work to return -1 i would think. 18:19:34 probably 18:20:01 it's probably cheaper to return 0 if they're equal and -1 or +1 to indicate which one is greater. 18:20:27 or even just the amount by which it's greater. 18:20:44 since then you could just subtract letters and check for 0 18:26:19 variable sum : str= 0 do 2dup c@ sum +! c@ sum -! 1+ swap 1+ loop 2drop sum @ ; 18:26:37 counting "variable" that's 18 18:28:14 What's the shortest we have so far? 18:29:08 And if we define lower level words we only count the total of *body* words? 18:29:13 Headers are irrelevant? 18:29:31 yeah 18:29:43 and the shortest we have so far is one i just made 18:30:01 which is 17 if you exclude variable as a sort of header 18:31:10 why do you need sum? 18:31:48 repeatedly add character from first word, subtract character from second 18:32:22 okay nevermind, that won't work unless there's a check for zero at each step 18:32:41 how about xor 18:32:44 so the shortest one is still 19 18:32:52 c@ sum xor c@ sum xor 18:33:11 and now you can factor those three words out 18:33:24 er 18:33:47 well it would have to be xor! i guess 18:35:13 : cx! c@ sum xor ! ; then cx! cx! sum 0 = if ... 18:35:57 that word could also increment and swap 18:36:40 If it works on gforth is that a "pass"? 18:36:56 : cx! dup c@ sum xor ! 1+ swap ; 18:37:42 gforth is a pass 18:38:14 tangentstorm, i like your thinking :) 18:38:16 : str= 0 do cx! cx! sum 0= if -1 unloop exit then loop 0 ; 18:38:34 (untested and probably wrong) :) 18:39:16 still 19 by your measure though 18:39:23 beats me 18:40:10 shoot 18:40:14 hrm.. i bet you don't need sum though. 18:40:32 it's at least a prettier 19 than the one before 18:41:16 you could probably use rot instead of sum, and just juggle the string counters 18:41:20 also i think there's c 18:41:25 er c> 18:42:22 gforth doesn't seem to have it :( 18:43:08 --- join: koisoke (xef4@epilogue.org) joined #forth 18:44:14 i was thinking of >in and it's not what you want. 18:44:29 oh 18:45:48 also doesn't it have to be sum @ 18:48:18 * tangentstorm is spoiled by type checkers and is now too lazy to write good forth. :) 18:48:30 :D 18:49:23 this is my slight variation of yours: : str= 0 do cx! cx! sum 0= if leave then loop 2drop sum @ ; 18:52:07 oh, i didn't know about leave. cool. 18:53:02 should also be 'sum @ 0=' 18:54:26 : cx! dup c@ sum @ xor sum ! 1+ swap ; \ i think 18:54:40 oh yeah 18:55:27 23 ack 18:56:24 i think rot would save us at the expense of some readabilty. 18:57:21 readability is our enemy 18:58:43 start with (a0 a1 0) on the stack inside the loop... 18:59:58 : cx (a0 a1 x -- a1 a0 [x xor ch] ) rot dup ch@ xor swap ; 19:00:58 : cx (a0 a1 x -- a1 a0 [x xor ch] ) rot dup ch@ xor ; 19:03:07 : str= 0 do 0 cx cx dup if leave then >r 2drop r> ; 19:03:22 : str= 0 do 0 cx cx dup if leave then loop >r 2drop r> ; 19:04:31 result would be 0 if same else ... the first differing characters xored together i guess. 19:04:40 Are we still at 17? 19:04:57 tangentstorm: you just posted a promising inner sequence, right? Not a full solution? 19:04:58 it seems like we're at 19 19:05:07 Oh, I think I have a gforth legit 17. 19:05:14 Hang on and I will post. 19:05:30 i think what i just posted will actually run. 19:05:33 oh sweet 19:05:38 Helper word: 19:05:44 i think you might have missed the increment 19:05:49 : overj+@ over j + @ ; 19:05:54 I assume that counts as 4. 19:06:15 ah yeah that's why i had the swap. i just forgot. good point. 19:06:15 yeah 19:07:19 : str= FFFFFFFF. do -rot overj+@ overj+@ = >r rot r> and loop -rot 2drop ; 19:07:29 And that's 13. 19:07:46 I haven't tested it. 19:07:49 Just scritinized it. 19:07:53 scrutinized 19:08:08 But I checked to make sure that the use of j in overj+@ is valid. 19:08:30 what does that actually do? 19:08:31 There's a return address on the stack, so "i" is a level deeper. 19:08:33 Hence j. 19:08:45 overj+@? 19:08:55 I should have called it overi+@. 19:09:02 Because that's what it really does in the higher level word. 19:09:10 ohhhhh 19:09:14 okay 19:09:19 Sorry - poor name choice. 19:09:42 My first cut had the idiom "over i + @" twice, and I realized I could factor it into a definition if I used j instead of i. 19:10:10 It's almost cheating - it counts on the implementation-specific use of the return stack for i and j. 19:10:17 what's FFFFFFFF. ? 19:10:26 That is equivalent to -1 0 19:10:26 it doesn't seem to work on my gforth 19:10:36 say hex first. 19:10:47 oh. 19:10:49 Oh, good point. 19:11:01 So if you didn't want to say hex first you'd have to use some other weird number. 19:11:12 But if you type -1 0 d. it will tell you what that number needs to be. 19:11:38 hex doesn't really affect the program length though 19:11:46 yeah 19:11:55 Well, you could use a decimal number to achieve the same thing. 19:12:21 4967295. 19:12:37 Typo. 19:12:53 4294967295. 19:14:04 what does the period at the end do? 19:14:40 seems to put a 0 on the stack 19:15:36 well i mean i know but what is it meant for? :) 19:15:47 the feature that lets you put that there 19:16:14 probably from the old days when cells were 16 bits 19:16:39 oh it's a double precision integer 19:16:40 so you could use 32 bit numbers.. that's a wild guess. 19:16:43 Yes. 19:16:53 It gets you a -1 flag and a 0 to start the do loop in one shot. 19:17:00 Sneaky, but valid. 19:17:22 And it's for 32-bit cells. 19:17:49 My gforth is 32-bits, and it works there. 19:20:07 '-1. 1+' works too but costs a token. 19:20:54 but looks pretty :) 19:21:38 --- quit: nighty-_ (Ping timeout: 245 seconds) 19:21:49 Oh, I have it shorter by one. 19:22:34 Oh, no I don't. Same. 19:23:44 No wait. It is shorter. Replace the >r rot r> and with 3 roll and 19:23:49 So that's 16. 19:24:33 I guess I should go test this. 19:27:06 Heh heh heh. 19:27:10 Hung my system - something is wrong. 19:27:14 Maybe I typed it in wrong. 19:27:24 hrm i have an idea 19:27:52 it's slower but smaller. 19:29:29 small is the goal!! 19:30:02 Oh, ok. 19:30:10 Mine is wrong. 19:30:17 The FFFFFFFF. thing is misguided. 19:30:38 Yes, it gets you the flag and the 0 at the same time, but that's not right for kicking off the do loop. 19:30:55 You want 0 for that, not 0. 19:31:10 So we have to have -1 swap 0 instead, so I'm back up to 18. 19:31:31 But I guess that's still better than 19. 19:31:34 Trying that now. 19:31:34 : hash (a n - x) 0 swap 0 do dup ch@ xor swap loop ; \ untested 19:33:05 Or, let's just use dup 0. Any non-zero number should do for the initial flag. 19:33:13 That might fail on 0 length strings, though. 19:33:19 That would cut it back to 17. 19:35:30 hooray 19:35:45 : str= (a0 a1 n - f) swap over hash hash = ; 19:36:07 : hash (a n - x) 0 swap 0 do dup ch@ xor swap 1loop ; \ untested 19:36:12 : hash (a n - x) 0 swap 0 do dup ch@ xor swap 1+ loop ; \ untested 19:36:36 14 if i'm counting right and it actually works. 19:36:43 what?! 19:36:46 it shouldn't 19:37:03 why not? 19:37:05 Wow. 19:37:22 you could use + instead of xor 19:37:36 Hang on - I'm trying that. That's cool. 19:37:50 because if you go through it step by step it seems like that you're executing 0 ch@ 19:38:31 no it's only looking at one string at a time. 19:39:02 ah hrm. 19:39:09 2swap? 19:39:17 no that would be silly :) 19:39:26 Well, it's c@, not ch@. 19:39:29 But no worries. 19:39:54 0 swap 0 was meant to leave 'string-length 0 ' atop the stack for 'do' 19:40:02 It crashed. 19:40:34 --- join: kumool (~mool@adsl-64-237-224-98.prtc.net) joined #forth 19:40:41 I'll let you work on yours - I'm still troubleshooting mine. 19:40:42 but that leavs a 0 on the stack, and really i wanted 0 a 19:41:23 it would appear you need to increment also i think 19:41:28 increment a 19:41:36 that's what the 1+ is for 19:41:58 oops 19:42:04 i was using your older one 19:43:09 hrm. how do i put a string on the stack in gforth? 19:43:22 " cat" doesn't work. 19:43:31 --- quit: kumul (Ping timeout: 260 seconds) 19:44:37 s" cat" 19:44:45 thanks 19:44:46 how about this: : hash 0 swap 0 do swap dup c@ >r swap r> xor 1+ loop nip ; 19:46:25 i think we can get by with just the one stack without adding any tokens 19:46:44 nevermind what i just wrote 19:48:04 My use of j isn't doing what I thought. 19:48:07 it counts the letters in the string if it's an even number of letters and if it's an odd number of letters it does... weird things 19:48:10 Thought I thought I tested it. 19:55:53 my first 19-word definition requires a <> instead of a = 19:56:13 but it otherwise works 19:57:20 : hash ( a n - ) 0 -rot 0 ?do ( x a ) dup c@ rot + swap 1+ loop drop ; \ tested. s" cat" hash -> 13 19:57:26 er -> 312 19:59:04 well, it looks that makes it the shortest working one 20:00:59 it's easier if it has (a0 n0 a1 n1) to start 20:01:16 that's what i was counting by 20:01:52 : str= ( a0 n0 a1 n1 ) hash -rot hash = ; 20:02:09 s" cat" s" cat" str= .s <2> -1 -1 ok 20:02:42 er.. one of those '-1' was left over from before 20:03:14 still 15 though 20:03:24 although if KipIngram gets theirs working, it will be the shortest to be true equality :D 20:03:35 hrm wait 20:04:30 --- quit: Ethical (Ping timeout: 265 seconds) 20:06:28 if you change the c@ in hash to @, then it can distinguish a lot more strings 20:07:02 widechars, you mean? 20:07:36 just interpreting the string as a series of overlapping integers 20:07:58 the characters are the same size but you can take in a bunch at a time 20:08:03 Ok, I have an 18-word solution that's tested. 20:08:29 hoorah 20:08:33 But - it leaves a nonzero flag rather than -1. 20:08:41 And, I think it would fail if the strings were of length 0. 20:08:56 As in I think it would return 0. 20:09:02 And two zero length strings match. 20:09:03 it's still probably fascinating to look at :D 20:09:05 So that's not quite right. 20:09:12 It close to what I already posted. 20:09:23 Still looking at it, though. 20:12:06 Although it looks like 0 0 do i . loop goes crackers in gforth . 1 0 do ... loop does a single iteration. 0 0 do ... loop does maxint iterations, apparently. 20:12:22 So that pretty much hoses any solution that attempts to use a straight up do loop in the zero length case. 20:12:31 So I propose we set aside the zero length case. 20:12:41 that's fine 20:12:44 And I propose we accept any non-zero flag as equality. 20:13:00 Or rather as "true." 20:13:13 i said you can have any two flags for either case as long as you can tell them apart, eheh 20:13:13 Is there a Boolean and in Forth? 20:13:21 AND seems to be a bit-wise and. 20:15:20 --- join: mnemnion (~mnemnion@c-98-210-219-91.hsd1.ca.comcast.net) joined #forth 20:15:35 I can tack a 0> on at the end and it converts flag to -1, but that moves the count to 19. 20:15:57 you can use whatever flags you want 20:16:11 KipIngram: use '?do' instead of 'do' 20:17:55 Yes, I think we can. 20:18:04 And that would leave the correct flag on the stack. 20:18:05 Nice. 20:18:19 And, I figured out that if I use u> instead of and I get the result I want. 20:18:31 I think this has us to 18 with something that works for all strings. 20:18:31 Stand by. 20:18:52 --- join: Ethical (~sam@139.216.253.31) joined #forth 20:18:59 my version doesn't work with all strings? :/ 20:19:22 your version reports palindromes as equal 20:19:23 http://pastebin.com/dj8v0h06 20:19:28 er 20:19:29 Ok, I meant u<. 20:20:02 ignore that link, it's just garbage 20:20:26 Wait. 20:20:49 the ?do trick will keep the code from crashing on zero length strings, but it doesn't leave a -1 on the stack. It still fails. 20:20:58 hrm. good point. 20:21:05 Well, it will leave the -1 on the stack if I start off with -1 swap 0 do. 20:21:27 But if I start with dup 0 do it will leave the 0 on the stack. 20:21:53 So if we insist on a correct result for the 0 length case then we have to accept -1 swap 0 do. 20:21:58 what about something crazy that takes the distance in ram between the two strings, fetches both characters, and then does the comparison? 20:22:26 i thought about that a while ago while pacing around in my hallway :D 20:22:29 And that's a 19-length answer. 20:22:50 I thought of that earlier too, but I'm not sure that will shorten it. 20:22:57 I didn't smell a win strongly enough to go after it. 20:23:16 KipIngram: i wouldn't insist on a correct answer for 0 length strings 20:23:55 Ok, in that case then I can give you 18. 20:24:00 hooray 20:24:17 I'm still trying to trim it, though. 20:24:28 And for nonzero length strings it will give a good 0 / -1 answer. 20:25:28 could i see so far? :) 20:25:33 because i ought to get to bed 20:25:51 CREATE> lit , lit , 20:25:54 er 20:26:08 me too. this was fun though. 20:27:08 i'm glad i could give the spark :D 20:28:30 Whoa - I think I'm back down to 17. 20:28:43 nys: yes, let me run a quick test and I'll post. 20:28:48 Give me 3-4 minutes. 20:28:53 sweet alright 20:34:54 --- quit: Zarutian (Quit: Zarutian) 20:35:22 Ok. So something is still a bit off about it. I'll post the correction shortly. But here is what I have at the moment: 20:35:30 : overi+c@' over j + c@ ; 20:35:40 : overi+c@ overi+c@' ; 20:36:02 --- quit: malyn (Ping timeout: 252 seconds) 20:36:53 : str= -4294967296 -rot do overi+c@ overi+c@ = 3 roll and -rot loop 2drop ; 20:37:12 Oh, that number should have a period at the end. 20:37:27 I count that as 4 + 1 + 12 = 17. 20:37:41 yeah 20:38:20 Actually I believe that if you replace do with ?do it will work for zero length strings, with a -1 flag returned in all cases where the strings match. 20:38:25 But, like I said, something is a tad off. 20:38:31 I'll figure it out. 20:39:52 Oh, I see why it won't work. 20:42:03 --- join: malyn (~malyn@unaffiliated/malyn) joined #forth 20:45:39 Ok, so this is tested and works, but not for the zero-length case. Code length 18: 20:45:44 : overi+c@' over j + c@ ; 20:45:56 : overi+c@ overi+c@' ; 20:46:55 : str= dup 0 do -rot overi+c@ overi+c@ = 3 roll u> loop -rot 2drop ; 20:47:43 tangentstorm: did you get yours working? 20:50:00 (yes!) 20:50:53 ? 20:50:58 Yes he did? 20:51:07 : hash ( a n - ) 0 -rot 0 ?do ( x a ) dup c@ rot + swap 1+ loop drop ; : str= ( a0 n0 a1 n1 ) hash -rot hash = ; 20:51:33 I count that as 15. 20:51:33 he did 20:51:53 Wait - 16. 20:52:09 i count 16 also 20:52:17 Very sweet. :-) 20:52:33 but unable to tell palindromes apart 20:52:43 Yes, I'm trying to figure out what the hell it does. 20:53:14 it compares the sum of the letters of the two strings 20:53:24 Hold it. 20:53:29 That's not a proper test. 20:53:45 What it return for abcde and abced? 20:53:57 Those just have two letters transposed. 20:53:57 it reports them as equal 20:54:01 They would sum to the same. 20:54:05 exactly 20:54:19 Mine would fail those. 20:54:29 Rather it would report them as failing to match. 20:54:48 that's why i said earlier that yours was the shortest true test 20:54:52 But it's still a very nice bit of code. 20:55:50 if you replace the c@ with @ then when looking at a word like "cat" it will sum 'cat?' 'at??' 't???' instead of 'c' 'a' 't' 20:56:10 and it's still not a proper test but it's less likely for there to be two words with the same sum 20:56:27 Yes. 20:57:58 Oh, ok - I remember seeing you mention that. I was too focused on my own debugging to really follow that at the time. 20:58:50 this was fun :D 20:58:55 time for sleep 20:59:11 night night 21:00:40 Night - that was fun. 21:00:40 Thanks. 21:01:00 :-) 21:01:07 --- quit: nys (Quit: sleep) 21:43:26 --- nick: ASau` -> ASau 22:25:52 --- quit: kumool (Quit: Leaving) 23:59:59 --- log: ended forth/14.02.08