Hello, I am struggling with finding one code related to digitsNow write a function named swap
that
takes an integer vector vec
as input,
swaps every odd-even positional pairs (of digits)
here are my findings until now :
a <- 1:100
n <- length(a)
if (i %% n ≠ 0)
for (i in length(a))
{i <- 1
j <- a[i]
g <- a[i+1]
a[i] <- g
a[i+1] <- j }}
can someone help me?
thank you
# FUNCTIONS
is_even <- function(x) x%%2 == 0
is_hit <- function(x) is_even(x[1]) & !is_even(x[2]) | !is_even(x[1]) & is_even(x[2])
gen_data <- function(x) sample(seq(from = 1, to = x),replace = TRUE
mk_pairs <- function(x) split(x, ceiling(seq_along(x)/2))
prepare <- function(x) mk_pairs(gen_data(x))
exchange <- function(x) if(is_hit(x)) rev(x) else x
swap <- function(x) unlist(lapply(prepare(x), exchange), recursive = FALSE, use.names = FALSE)
# MAIN
set.seed(137)
swap(100)
#> [1] 34 59 8 38 79 39 96 93 35 65 30 48 13 43 14 22 4 6 89 70 48 15 13 32 14
#> [26] 95 35 97 55 35 86 35 47 16 20 15 71 96 13 14 69 64 51 99 70 91 38 87 54 65
#> [51] 38 47 8 44 25 96 22 9 69 91 58 30 21 55 89 45 73 50 3 18 46 96 36 31 44
#> [76] 60 78 55 15 89 1 89 27 94 59 43 44 35 40 83 43 40 81 14 46 37 43 10 7 59
set.seed(137)
unlist(prepare(100), recursive = FALSE, use.names = FALSE)
#> [1] 59 34 8 38 79 39 93 96 35 65 30 48 13 43 14 22 4 6 70 89 15 48 32 13 95
#> [26] 14 35 97 55 35 35 86 16 47 15 20 96 71 14 13 64 69 51 99 91 70 87 38 65 54
#> [51] 47 38 8 44 96 25 9 22 69 91 58 30 21 55 89 45 50 73 18 3 46 96 31 36 44
#> [76] 60 55 78 15 89 1 89 94 27 59 43 35 44 83 40 40 43 14 81 37 46 10 43 7 59
Created on 2020-10-17 by the reprex package (v0.3.0.9001)
this is not correct according to my R studio.. To check the answer:
The output of print(swap(1:10))
is
[1] 2 1 4 3 6 5 8 7 10 9
swap(x) takes an int, not a vector
I need a swap function that takes an integer vector vec as input, and swaps every odd-even positional pairs of digits.
The previous question was about Setting the random seed as 0 and save the random seed vector into a variable seed whose answer was :
set.seed(0)
seed <- set.seed(0)
seed <- .Random.seed
seed
swap
takes an integer as a matter of convenience for illustrating the compositioning of a solution in the absence of any representative data in the reprex
. gen_data
and prepare
can be dropped and mk_pairs
substituted for prepare
in swap
.
set.seed
was used solely for the purpose of a reproducible example showing both the swapped vector and the source vector. It was not there to address any question outside the thread..
nums <- 1:19
(numtext <- paste0(nums,collapse = "") )
(digitstext2 <- digitstext <- unlist(strsplit(numtext,"?")))
pairlength <- 2*floor(nchar(numtext)/2)
(pos0 <- which(seq_len(pairlength) %% 2 == 0))
(pos1 <- which(seq_len(pairlength) %% 2 == 1))
digitstext2[pos0] <- digitstext[pos1]
digitstext2[pos1] <- digitstext[pos0]
digitstext
digitstext2
system
Closed
November 8, 2020, 7:10am
8
This topic was automatically closed 21 days after the last reply. New replies are no longer allowed. If you have a query related to it or one of the replies, start a new topic and refer back with a link.