Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
16
Task/Perfect-shuffle/R/perfect-shuffle-1.r
Normal file
16
Task/Perfect-shuffle/R/perfect-shuffle-1.r
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
wave.shuffle <- function(n) {
|
||||
deck <- 1:n ## create the original deck
|
||||
new.deck <- c(matrix(data = deck, ncol = 2, byrow = TRUE)) ## shuffle the deck once
|
||||
counter <- 1 ## track the number of loops
|
||||
## defining a loop that shuffles the new deck until identical with the original one
|
||||
## and in the same time increses the counter with 1 per loop
|
||||
while (!identical(deck, new.deck)) { ## logical condition
|
||||
new.deck <- c(matrix(data = new.deck, ncol = 2, byrow = TRUE)) ## shuffle
|
||||
counter <- counter + 1 ## add 1 to the number of loops
|
||||
}
|
||||
return(counter) ## final result - total number of loops until the condition is met
|
||||
}
|
||||
test.values <- c(8, 24, 52, 100, 1020, 1024, 10000) ## the set of the test values
|
||||
test <- sapply(test.values, wave.shuffle) ## apply the wave.shuffle function on each element
|
||||
names(test) <- test.values ## name the result
|
||||
test ## print the result out
|
||||
26
Task/Perfect-shuffle/R/perfect-shuffle-2.r
Normal file
26
Task/Perfect-shuffle/R/perfect-shuffle-2.r
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#A strict reading of the task description says that we need a function that does exactly one shuffle.
|
||||
pShuffle <- function(deck)
|
||||
{
|
||||
n <- length(deck)#Assumed even (as in task description).
|
||||
shuffled <- array(n)#Maybe not as general as it could be, but the task said to use whatever was convenient.
|
||||
shuffled[seq(from = 1, to = n, by = 2)] <- deck[seq(from = 1, to = n/2, by = 1)]
|
||||
shuffled[seq(from = 2, to = n, by = 2)] <- deck[seq(from = 1 + n/2, to = n, by = 1)]
|
||||
shuffled
|
||||
}
|
||||
|
||||
task2 <- function(deck)
|
||||
{
|
||||
shuffled <- deck
|
||||
count <- 0
|
||||
repeat
|
||||
{
|
||||
shuffled <- pShuffle(shuffled)
|
||||
count <- count + 1
|
||||
if(all(shuffled == deck)) break
|
||||
}
|
||||
cat("It takes", count, "shuffles of a deck of size", length(deck), "to return to the original deck.","\n")
|
||||
invisible(count)#For the unit tests. The task wanted this printed so we only return it invisibly.
|
||||
}
|
||||
|
||||
#Tests - All done in one line.
|
||||
mapply(function(x, y) task2(1:x) == y, c(8, 24, 52, 100, 1020, 1024, 10000), c(3, 11, 8, 30, 1018, 10, 300))
|
||||
Loading…
Add table
Add a link
Reference in a new issue