A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
29
Task/Best-shuffle/Groovy/best-shuffle.groovy
Normal file
29
Task/Best-shuffle/Groovy/best-shuffle.groovy
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
def shuffle(text) {
|
||||
def shuffled = (text as List)
|
||||
for (sourceIndex in 0..<text.size()) {
|
||||
for (destinationIndex in 0..<text.size()) {
|
||||
if (shuffled[sourceIndex] != shuffled[destinationIndex] && shuffled[sourceIndex] != text[destinationIndex] && shuffled[destinationIndex] != text[sourceIndex]) {
|
||||
char tmp = shuffled[sourceIndex];
|
||||
shuffled[sourceIndex] = shuffled[destinationIndex];
|
||||
shuffled[destinationIndex] = tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
[original: text, shuffled: shuffled.join(""), score: score(text, shuffled)]
|
||||
}
|
||||
|
||||
def score(original, shuffled) {
|
||||
int score = 0
|
||||
original.eachWithIndex { character, index ->
|
||||
if (character == shuffled[index]) {
|
||||
score++
|
||||
}
|
||||
}
|
||||
score
|
||||
}
|
||||
|
||||
["abracadabra", "seesaw", "elk", "grrrrrr", "up", "a"].each { text ->
|
||||
def result = shuffle(text)
|
||||
println "${result.original}, ${result.shuffled}, (${result.score})"
|
||||
}
|
||||
1
Task/Best-shuffle/Icon/best-shuffle-1.icon
Normal file
1
Task/Best-shuffle/Icon/best-shuffle-1.icon
Normal file
|
|
@ -0,0 +1 @@
|
|||
# every !t :=: ?t # Uncomment to get a random best shuffling
|
||||
18
Task/Best-shuffle/Icon/best-shuffle-2.icon
Normal file
18
Task/Best-shuffle/Icon/best-shuffle-2.icon
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
procedure main(args)
|
||||
while scram := bestShuffle(line := read()) do
|
||||
write(line," -> ",scram," (",unchanged(line,scram),")")
|
||||
end
|
||||
|
||||
procedure bestShuffle(s)
|
||||
t := s
|
||||
# every !t :=: ?t # Uncomment to get a random best shuffling
|
||||
every i := 1 to *t do
|
||||
every j := (1 to i-1) | (i+1 to *t) do
|
||||
if (t[i] ~== s[j]) & (s[i] ~== t[j]) then break t[i] :=: t[j]
|
||||
return t
|
||||
end
|
||||
|
||||
procedure unchanged(s1,s2) # Number of unchanged elements
|
||||
every (count := 0) +:= (s1[i := 1 to *s1] == s2[i], 1)
|
||||
return count
|
||||
end
|
||||
9
Task/Best-shuffle/J/best-shuffle-1.j
Normal file
9
Task/Best-shuffle/J/best-shuffle-1.j
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
bestShuf =: verb define
|
||||
yy=. <@({~ ?~@#)@I.@= y
|
||||
y C.~ (;yy) </.~ (i.#y) |~ >./#@> yy
|
||||
)
|
||||
|
||||
fmtBest=:3 :0
|
||||
b=. bestShuf y
|
||||
y,', ',b,' (',')',~":+/b=y
|
||||
)
|
||||
7
Task/Best-shuffle/J/best-shuffle-2.j
Normal file
7
Task/Best-shuffle/J/best-shuffle-2.j
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
fmtBest&>;:'abracadabra seesaw elk grrrrrr up a'
|
||||
abracadabra, bdacararaab (0)
|
||||
seesaw, eawess (0)
|
||||
elk, lke (0)
|
||||
grrrrrr, rrrrrrg (5)
|
||||
up, pu (0)
|
||||
a, a (1)
|
||||
26
Task/Best-shuffle/Liberty-BASIC/best-shuffle.liberty
Normal file
26
Task/Best-shuffle/Liberty-BASIC/best-shuffle.liberty
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
'see Run BASIC solution
|
||||
list$ = "abracadabra seesaw pop grrrrrr up a"
|
||||
|
||||
while word$(list$,ii + 1," ") <> ""
|
||||
ii = ii + 1
|
||||
w$ = word$(list$,ii," ")
|
||||
bs$ = bestShuffle$(w$)
|
||||
count = 0
|
||||
for i = 1 to len(w$)
|
||||
if mid$(w$,i,1) = mid$(bs$,i,1) then count = count + 1
|
||||
next i
|
||||
print w$;" ";bs$;" ";count
|
||||
wend
|
||||
|
||||
function bestShuffle$(s1$)
|
||||
s2$ = s1$
|
||||
for i = 1 to len(s2$)
|
||||
for j = 1 to len(s2$)
|
||||
if (i <> j) and (mid$(s2$,i,1) <> mid$(s1$,j,1)) and (mid$(s2$,j,1) <> mid$(s1$,i,1)) then
|
||||
if j < i then i1 = j:j1 = i else i1 = i:j1 = j
|
||||
s2$ = left$(s2$,i1-1) + mid$(s2$,j1,1) + mid$(s2$,i1+1,(j1-i1)-1) + mid$(s2$,i1,1) + mid$(s2$,j1+1)
|
||||
end if
|
||||
next j
|
||||
next i
|
||||
bestShuffle$ = s2$
|
||||
end function
|
||||
5
Task/Best-shuffle/Mathematica/best-shuffle.mathematica
Normal file
5
Task/Best-shuffle/Mathematica/best-shuffle.mathematica
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
BestShuffle[data_] :=
|
||||
Flatten[{data,First[SortBy[
|
||||
List[#, StringLength[data]-HammingDistance[#,data]] & /@ StringJoin /@ Permutations[StringSplit[data, ""]], Last]]}]
|
||||
|
||||
Print[#[[1]], "," #[[2]], ",(", #[[3]], ")"] & /@ BestShuffle /@ {"abracadabra","seesaw","elk","grrrrrr","up","a"}
|
||||
Loading…
Add table
Add a link
Reference in a new issue