Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Binary-search/Groovy/binary-search-1.groovy
Normal file
13
Task/Binary-search/Groovy/binary-search-1.groovy
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
def binSearchR
|
||||
//define binSearchR closure.
|
||||
binSearchR = { a, key, offset=0 ->
|
||||
def m = n.intdiv(2)
|
||||
def n = a.size()
|
||||
a.empty \
|
||||
? ["The insertion point is": offset] \
|
||||
: a[m] > key \
|
||||
? binSearchR(a[0..<m],key, offset) \
|
||||
: a[m] < target \
|
||||
? binSearchR(a[(m + 1)..<n],key, offset + m + 1) \
|
||||
: [index: offset + m]
|
||||
}
|
||||
17
Task/Binary-search/Groovy/binary-search-2.groovy
Normal file
17
Task/Binary-search/Groovy/binary-search-2.groovy
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
def binSearchI = { aList, target ->
|
||||
def a = aList
|
||||
def offset = 0
|
||||
while (!a.empty) {
|
||||
def n = a.size()
|
||||
def m = n.intdiv(2)
|
||||
if(a[m] > target) {
|
||||
a = a[0..<m]
|
||||
} else if (a[m] < target) {
|
||||
a = a[(m + 1)..<n]
|
||||
offset += m + 1
|
||||
} else {
|
||||
return [index: offset + m]
|
||||
}
|
||||
}
|
||||
return ["insertion point": offset]
|
||||
}
|
||||
17
Task/Binary-search/Groovy/binary-search-3.groovy
Normal file
17
Task/Binary-search/Groovy/binary-search-3.groovy
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
def a = [] as Set
|
||||
def random = new Random()
|
||||
while (a.size() < 20) { a << random.nextInt(30) }
|
||||
def source = a.sort()
|
||||
source[0..-2].eachWithIndex { si, i -> assert si < source[i+1] }
|
||||
|
||||
println "${source}"
|
||||
1.upto(5) {
|
||||
target = random.nextInt(10) + (it - 2) * 10
|
||||
print "Trial #${it}. Looking for: ${target}"
|
||||
def answers = [binSearchR, binSearchI].collect { search ->
|
||||
search(source, target)
|
||||
}
|
||||
assert answers[0] == answers[1]
|
||||
println """
|
||||
Answer: ${answers[0]}, : ${source[answers[0].values().iterator().next()]}"""
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue