r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

BrianH
26-Oct-2009
[14933x4]
Should be faster too.
If a is sorted:
>> a: [a a a b b c d e e] b: [] foreach x unique a [repend b [x 1 
+ offset? find a x find/last a x]] b
== [a 3 b 2 c 1 d 1 e 2]
Or you could use REDUCE/into or map! if you are using R3.
amacleod
26-Oct-2009
[14937]
Awsome...
BrianH
26-Oct-2009
[14938x3]
If you preallocate the result it might be faster in some cases - 
it should be twice the length of the UNIQUE a (or the saame length 
in map)
...same length if map!.
Other tricks can be used if you can't sort a.
Ashley
26-Oct-2009
[14941]
unique remove-each x a [(find a x) = find/last a x]
Ladislav
27-Oct-2009
[14942]
not that I want to do nit-picking, but it should be noted, that the 
algorithms presented above are all O(n * n), while an O(n * log-e 
n) algorithm can be written, although such an algorithm is likely 
to be a bit more complicated
Gabriele
28-Oct-2009
[14943]
I'd just SORT then PARSE...
Ashley
28-Oct-2009
[14944]
Sounds like a new puzzle entry! ;)
Maxim
28-Oct-2009
[14945]
hehe
BudzinskiC
28-Oct-2009
[14946]
Puzzle entry.. Is there a code golf website for REBOL? Like codegolf.com 
? I did those with Ruby, that was pretty fun.
Sunanda
28-Oct-2009
[14947x2]
No really.....There is Puzzles and Puzzle Answers here, but they 
aren't very web-public.

There have been some nice puzzles on the mailing list:
   http://www.rebol.org/ml-topic-detail.r?l=p&topic=puzzle
The big problem with most code golf puzzles is they only ever play 
one one......It'd be better to have puzzles that are rolled out in 
stages: each stage being a modification to the previous puzzle spec. 
that way, generality and flexibility would be rewarded.
BudzinskiC
28-Oct-2009
[14949]
Yeah, usually the focus lies on code size (who writes the tiniest 
solution) which isn't always the best solution to a problem. Well, 
there aren't "best solutions" anyhow because it always depends on 
what you need (speed/stability/security/readability/etc.), often 
enough you need to make a tradeoff there so you can't really say 
one is best. But your idea would be a good start to improve code 
golfing. Now you just need to make a nice website that I can visit 
;)
Sunanda
28-Oct-2009
[14950]
...switching to [All] for the code golf discussion.....
Izkata
29-Oct-2009
[14951]
Is there a simple way to convert a number to its binary representation?

This is what I want, but without the limit of 255 that char! types 
have:
>> enbase/base to-binary to-char 7 2
== "00000111"
Sunanda
30-Oct-2009
[14952]
This does it, though there may be faster native ways for the specific 
case of decimal-->binary@
   http://www.rebol.org/documentation.r?script=base-convert.r
Maxim
30-Oct-2009
[14953x2]
found a bug in 'FOR when used in series... it becomes an endless 
loop..
>> s: "12345"
== "12345"
>> for c s tail s 1 [probe c]
12345
2345
345
45
5
; <----- it should stop here 




....
Steeve
30-Oct-2009
[14955]
Izkata, it's a little tricky with R2, but this works for any integer:

>> enbase/base debase/base to-hex 546 16 2
== "00000000000000000000001000100010"
Izkata
30-Oct-2009
[14956]
Thanks Sunanda, Steeve - I had a loop to generate it manually, but 
an enbase/debase-based solution is far faster  ;)
Geomol
30-Oct-2009
[14957]
Izkata, there's a library of bit operations with several useful functions, 
also one that can do, what you need:

>> do http://www.fys.ku.dk/~niclasen/rebol/libs/bit.r
>> enbit 546
== "00000000000000000000001000100010"

It's BSD license, so you can use it in your work.
Gabriele
31-Oct-2009
[14958]
Max, I think that has been reported many times, eg. http://www.rebol.net/cgi-bin/rambo.r?id=4121&
Henrik
2-Nov-2009
[14959]
Normal zero padding of decimals:

>> to-string .48
== "0.48"

Is it possible do to something like this:

>> magic-function .48
== ".48"


This would help in cases where you need to build a query string to 
search for plain text.
Gabriele
2-Nov-2009
[14960x2]
maybe something like:

magic-function: func [num [number!] /local result] [
    result: form num
    if #"0" = first result [remove result]
    result
]
you may want to handle cases like "0" specially, depending on what 
your exact needs are.
Henrik
2-Nov-2009
[14962x2]
hmm... thanks. it seems that the problem is a little different than 
that, however.


I'm just loading a string: "this-column contains 001" which is loaded 
incorrectly to [this-column contains 1], so I have to do this differently 
in the loading phase.
Ah, the user should just use quotes.
Graham
3-Nov-2009
[14964]
I've forgotten .. is there a sort that sorts on the basis of the 
length of strings?
BrianH
4-Nov-2009
[14965x2]
>> sort/compare ["1" "22" "333"] func [a b] [greater? length? :a 
length? :b]
== ["333" "22" "1"]
Actually, to make that a stable sort it should be greater-or-equal? 
instead.
Graham
4-Nov-2009
[14967]
cool ...
Gabriele
4-Nov-2009
[14968]
to make that a stable sort it needs to return -1, 0 or 1, not true 
or false. sign? on the difference would do the trick.
Pekr
8-Nov-2009
[14969]
reboltutorial claims, that copying files larger than 1GB fails with 
R2? Anyone having similar experience? http://reboltutorial.com/blog/do-you-need-to-copy-big-files/
BrianH
8-Nov-2009
[14970x2]
Perhaps he means 2GB, which is a known consequence of using 32bit 
signed integers for file indexes.
Fixed in R3, due to the switch to 64bit signed integers.
Henrik
12-Nov-2009
[14972x2]
is it possible to cascade error throws through several functions?
never mind, I did something wrong. got it now.
btiffin
12-Nov-2009
[14974]
Ubuntu 9.04; rebcore (2.7.6) can     devmem: open/read/binary %/dev/mem
rebview hangs.


Do I need to care?   I don't need View for this little informational 
gathering app, but ...


We are planning for an embedded system BIOS tweak so we can label 
an Asset Tag in the SMBIOS;  REBOL won the race getting the information 
decoded for everyone to see; beat Python development by a few minutes 
(in a highly uncompetitive sharing information back and forth development 
"race")
Gabriele
13-Nov-2009
[14975x3]
try /direct or /seek
/seek does not work
are you sure View didn't just pop up its security requestor behind 
the terminal so you couldn't see it?
Graham
13-Nov-2009
[14978x2]
Has anyone got a routine that calcuates the difference between two 
dates as an age in a format appropriate to that age.
So, age is displayed as a days for under a week, in weeks for under 
3 months, and as months upto 3 years, and then as years/months after 
that.
Chris
13-Nov-2009
[14980x2]
I've used 'case for that in the past, rough example:

	age: case [
		1 > diff: d2 - d1 ["less than a day"]
		7 > diff [reform [diff "days"]]
		... etc ...
	]
That way, you can tune it as fine as you need it.
Graham
13-Nov-2009
[14982]
I ended up using case .. and just straight subtraction of years etc 
instead of using 'difference which can sometimes lead to numeric 
overflow.