View in color | View discussion [6 posts] | License |
Download script | History | Other scripts by: clecorre |
10-Dec 4:25 UTC
[0.047] 11.101k
[0.047] 11.101k
do-pairs.rREBOL [
File: %do-pairs.r
Date: 08-03-2016
Author: "Christian Le Corre"
Title: "Do pairs"
Purpose: {Do pairs with values from a block}
]
do-pairs: func [param [block!] /rm-conv /local output][
output: make block! []
either rm-conv
[
foreach v1 param [
foreach v2 param[
if all [none? find/only output reduce[v2 v1] not equal? v1 v2][
append/only output reduce[v1 v2]
]
]
]
]
[
foreach v1 param [
foreach v2 param[
if not equal? v1 v2 [
append/only output reduce[v1 v2]
]
]
]
]
unique output
]
; var: ["toto" "titi" "tutu"]
; res: do-pairs/rm-conv var
; == [["toto" "titi"] ["toto" "tutu"] ["titi" "tutu"]]
; res: do-pairs var
; == [["toto" "titi"] ["toto" "tutu"] ["titi" "toto"] ["titi" "tutu"] ["tutu" "toto"] ["tutu" "titi"]] Notes
|