Enfants, mathématiques et R

L'éducation actuelle à l'école est de plus en plus réduite. Et dans la partie restante, l'accent est de plus en plus mis sur l'effet extérieur. "Travail de projet", présentations, effets wow, etc. clinquant. De plus, il est souvent difficile de savoir à qui ces exercices sont distribués - à l'enfant ou aux parents? La conséquence de tout cela est la nécessité de classes supplémentaires dans divers milieux, au sein de l'école ou alternativement, si l'objectif est de donner à l'enfant une éducation complÚte.


Dans le cas des mathĂ©matiques ou de la physique, vous pouvez essayer d'attraper deux oiseaux avec une pierre (enfin, ou un liĂšvre et un liĂšvre). Combinez la solution des problĂšmes de l'ext. classes (le programme scolaire ne convient pas pour cela) avec l'Ă©ducation parallĂšle d'une culture de travail avec les donnĂ©es et la formation aux approches algorithmiques. Nous ne parlons pas de robots de discussion en trois lignes, mais de l'utilisation d'un ordinateur dans le cadre de l'objectif initial - effectuer des calculs, mener des expĂ©riences numĂ©riques, modĂ©liser et rĂ©vĂ©ler des dĂ©pendances cachĂ©es, sur la base desquelles de nouvelles hypothĂšses peuvent ĂȘtre construites.


Je constate tout de suite que tout le monde ne sera pas intéressé par le sujet. Pour qui cela n'est pas pertinent - passez . Qui aura un supplément. idées, il serait intéressant de se familiariser aussi. Vient ensuite une série de problÚmes empruntés aux cours " Metashkola ", mathématiques, 3e année. Naturellement, le problÚme est d'abord résolu par un raisonnement logique, puis une méthode de solution utilisant un ordinateur est discutée.


Ajouts importants de la discussion ci-dessous:


  1. Le matériel est écrit du point de vue d'un parent, pas d'un enseignant. Il n'y a pas de services et de relations publiques. Voici juste un ensemble de considérations pratiques.
  2. R a été utilisé comme outil car il était plus pratique.

Il s'agit d'une continuation des publications précédentes .


Préambule général


library(tidyverse) library(glue) library(magrittr) library(lubridate) library(hms) library(numbers) library(polynom) library(Ryacas) library(stringi) library(tictoc) 

Voici une sĂ©rie de tĂąches qui peuvent ĂȘtre Ă©tendues Ă  l'infini.


Restaurer l'enregistrement


Défi


Restaurez l'enregistrement: 3∗∗:∗3=3∗ . Trouvez la somme de tous les nombres manquants.


Exemple de solution
 #  3ab = c3*3d df <- 0:9 %>% {tidyr::crossing(a = ., b = ., c = ., d = .)} %>% filter(300 + a * 10 + b == (c * 10 + 3) * (30 + d)) df 

Défi


Est-il possible de mettre les signes d'opĂ©rations arithmĂ©tiques au lieu de “∗” dans le record 7∗(7∗7∗7)∗7 pour obtenir 8?


Exemple de solution
 ops <- c('*', '/', '+', '-') #      df <- tidyr::crossing(op1 = ops, op2 = ops, op3 = ops, op4 = ops) %>% #        mutate(data = glue::glue("7 {op1} (7 {op2} 7 {op3} 7) {op4} 7"), expr = rlang::parse_exprs(data)) %>% mutate(res = purrr::map_dbl(expr, rlang::eval_bare)) %>% arrange(res) %>% filter(res == 8) print(tbl_df(df), n = 20) 

Défi


Tous les nombres de 1 à 100 sont écrits. Combien de fois le nombre 4 apparaßt-il dans l'enregistrement?


Exemple de solution
 #  100   4,      99 #    tidyr::crossing(d1 = 0:9, d2 = 0:9) %>% #   ,   4 filter(d1 == 4 | d2 == 4) %>% arrange(d1, d2) 

Défi


Le numéro 9, par lequel le numéro à trois chiffres a commencé, a été déplacé à la fin du numéro. Le résultat est un nombre qui est 216 de moins. Quelle est la somme des chiffres du numéro d'origine.


Exemple de solution
 #   : abc df <- tidyr::crossing(b = 0:9, c = 0:9) %>% #    9     mutate(delta = (900 + 10*b + c) - (100*b + 10*c + 9)) %>% filter(between(delta, 200, 230)) df 

Défi


Le produit de 5 nombres naturels consécutifs est 2520. Quel est le plus petit nombre?


Exemple de solution Méthode 1
 numbers::primeFactors(2520) 

Exemple de solution Méthode 2
 # https://joftius.wordpress.com/2015/10/19/finding-multiple-roots-of-univariate-functions-in-r/ f <- function(x) {x * (x+1) * (x+2) * (x+3) * (x+4) - 2520} rootSolve::uniroot.all(f, c(0, 2520)) 

Exemple de solution, méthode 3
 eq <- "x * (x+1) * (x+2) * (x+3) * (x+4) - 2520" yacas(glue("Simplify({eq})")) #            rts <- base::polyroot(c(-2520, 24, 50, 35, 10, 1)) #     n-1 #     # http://www.johnmyleswhite.com/notebook/2009/12/18/using-complex-numbers-in-r/ Re(rts[abs(Im(rts)) < 1^-10]) 

Défi


Quel nombre peut remplacer "∗" pour que le nombre 543∗ divisible par 4 ? Quelles sont toutes les options?


Exemple de solution
 tibble(num = 5430 + 0:9, mod = mod(num, 4)) %>% arrange(mod, num) 

Défi


Quel est le double du troisiĂšme trimestre du nombre 60?


Exemple de solution
 2*(1/3*(1/4*60)) 60 %>% {./4} %>% {./3} %>% {.*2} 

Défi


Divisez le cadran de la montre sans aiguilles en 2 parties afin que la somme des chiffres disponibles dans chaque section soit la mĂȘme.
Ajouter. la question est: combien de parties le cadran peut-il ĂȘtre divisĂ© de façon Ă  ce que dans chaque partie il y ait des nombres dont la somme soit Ă©gale?


Exemple de solution
 #       2  ,   #    ,    =  sum(1:12) / 2 #    for (i in 1:12){ res <- cumsum(i:12) print(glue(" : {i},  : {glue_collapse(res, ', ')}")) val <- which(res == 39) if(! identical(val, integer(0))){ print(glue("  [{i}; {val + i - 1}]")) } } 

«Taureaux et vaches»


Variation 1


Dans le numéro d'enregistrement, différents chiffres de 1 à 5 inclus.
Le nombre de nombres devinés se tenant à leur place est le nombre de taureaux. Le nombre de nombres devinés qui sont hors de propos est le nombre de vaches.


Qu'est-ce qu'un numéro à trois chiffres si vous savez:


  • 314 - 1 taureau et 1 vache;
  • 124 - 1 taureau et 1 vache;
  • 523 - 1 taureau et 1 vache.

Exemple de solution
 library(tidyverse) library(stringi) #   "an_bn_cn". c --    df <- c(1, 2, 3, 4, 5) %>% {tidyr::crossing(an = ., bn = ., cn = .)} %>% #    mutate(comb = purrr::pmap(., c)) %>% #     mutate(val = stri_join(an, bn, cn)) %>% #      # 314 -  1  filter(stri_detect_regex(val, "3[^1][^4]|[^3]1[^4]|[^3][^1]4")) %>% # 124 -  1  filter(stri_detect_regex(val, "1[^2][^4]|[^1]2[^4]|[^1][^2]4")) %>% # 523 -  1  filter(stri_detect_regex(val, "5[^2][^3]|[^5]2[^3]|[^5][^2]3")) %>% #      filter(purrr::map_int(comb, n_distinct) == 3) %>% #      (1   1 ) filter(purrr::map(comb, ~length(base::intersect(.x, c(3, 1, 4)))) == 2) %>% filter(purrr::map(comb, ~length(base::intersect(.x, c(1, 2, 4)))) == 2) %>% filter(purrr::map(comb, ~length(base::intersect(.x, c(5, 2, 3)))) == 2) df 

Variation 2


Dans le numéro d'enregistrement, différents chiffres de 1 à 5 inclus.
Le nombre de nombres devinés se tenant à leur place est le nombre de taureaux.
Le nombre de nombres devinés qui sont hors de propos est le nombre de vaches.
Qu'est-ce qu'un numéro à trois chiffres si vous savez:


543 - 1 taureau; 0 vache;
235 - 1 taureau; 0 vaches.


Exemple de solution
 library(tidyverse) library(stringi) df <- c(1, 2, 3, 4, 5) %>% tidyr::crossing(d3 = ., d2 = ., d1 = .) %>% #    mutate(comb = purrr::pmap(., c)) %>% #     mutate(val = stri_join(d3, d2, d1)) %>% #      # 543 -- 1 ; 0  filter(stri_detect_regex(val, "5..|.4.|..3")) %>% # 235 -- 1 ; 0  filter(stri_detect_regex(val, "2..|.3.|..5")) %>% #      filter(purrr::map_int(comb, n_distinct) == 3) %>% #      filter(purrr::map(comb, ~length(base::intersect(.x, c(5, 4, 3)))) == 1) %>% filter(purrr::map(comb, ~length(base::intersect(.x, c(2, 3, 5)))) == 1) df 

Remplissez le carré


Est-il possible de disposer dix points négatifs dans les cellules d'un tableau carré 4 par 4 de sorte que chaque colonne ait un nombre impair de points négatifs et que chaque ligne ait un nombre pair de points négatifs?


Exemple de solution, option 1
 #      ,    10.  : 3, 3, 3, 1 library(arrangements) library(foreach) #   : # 1 2 3 4 # 5 6 7 8 # 9 10 11 12 # 13 14 15 16 cmb <- arrangements::combinations(1:16, k = 10, replace = FALSE) pryr::object_size(cmb) #   ,   ,   .  icomb <- icombinations(1:16, k = 10, replace = FALSE) foreach(x = icomb, .combine=c) %do% { # x -    ,    "" #       #  isOdd <- function(x, set){ #   length(base::intersect(x, set)) %% 2 == 1 } isEven <- function(x, set){ #   length(base::intersect(x, set)) %% 2 == 0 } col_flag <- all( isOdd(x, c(1, 5, 9, 13)), isOdd(x, c(2, 6, 10, 14)), isOdd(x, c(3, 7, 11, 15)), isOdd(x, c(4, 8, 12, 16)) ) row_flag <- all( isEven(x, c(1, 2, 3, 4)), isEven(x, c(5, 6, 7, 8)), isEven(x, c(9, 10, 11, 12)), isEven(x, c(13, 14, 15, 16)) ) if(col_flag && row_flag) print(x) } 

Exemple de solution, option 2
 #      ,    10.  : 3, 3, 3, 1 library(tidyverse) library(magrittr) library(arrangements) library(foreach) #   : # 1 2 3 4 # 5 6 7 8 # 9 10 11 12 # 13 14 15 16 #   ,   ,   .  icomb <- icombinations(1:16, k = 10, replace = FALSE) df <- foreach(x = icomb, .combine = rbind) %do% { # x -    ,    "" #       #   v <- rep(0, 16) #   ,   # browser() v[x] <- 1 m <- matrix(v, nrow = 4, ncol = 4, byrow = TRUE) #  :      , #        if (all(colSums(m) %% 2 == 1) && all(rowSums(m) %% 2 == 0)) x else NULL } df %<>% as_tibble(.name_repair = "minimal") #       v <- rep(0, 16) #   ,   v[purrr::flatten_int(df[5, ])] <- 1 matrix(v, nrow = 4, ncol = 4, byrow = TRUE) 

Combinatoire


Défi


Combien de combinaisons diffĂ©rentes de lettres dans lesquelles deux lettres identiques ne sont pas cĂŽte Ă  cĂŽte peuvent ĂȘtre faites en rĂ©arrangeant les lettres K, A, W et A?


Jetez un Ɠil aux diffĂ©rentes considĂ©rations. GĂ©nĂ©ration de toutes les permutations distinctes d'une liste dans R


Exemple de solution
 #     # https://stackoverflow.com/questions/44918645/split-a-string-into-character-efficiently lset <- unlist(base::strsplit("", split = "", fixed = TRUE)) #       ,      lset <- c("", "1", "", "2") # library(permutations) df <- tidyr::crossing(p1 = lset, p2 = lset, p3 = lset, p4 = lset) ff <- function(...){ vals <- rlang::list2(...) # browser() n_distinct(unlist(vals)) } df %>% # mutate(u = purrr::pmap_int(., ~n_distinct(.x))) mutate(u = purrr::pmap_int(., ff)) %>% filter(u == 4) %>% select(-u) %>% #      mutate(s = purrr::pmap_chr(., stri_join)) %>% mutate_at(vars(s), stri_replace_all_regex, pattern = "(\\d+)", replacement = "") %>% distinct(s) %>% #     filter(!stri_detect_fixed(s, "")) 

Défi


Combien de dimanches peut-on faire en un an? Quel est le plus grand nombre possible?


Exemple de solution
 #   ,     366 %/% 7 #   .         366 %% 7 

La tĂąche des pirates


Pirates: A, B, C
Dire 1
A: B a 2 yeux
B: C a 2 yeux
C: A a 2 yeux


Dire 2
A: Nous avons tous 2 yeux
B: Nous avons tous 3 yeux
C: Nous avons tous 4 yeux


Chaque pirate a menti autant de fois que ses yeux. Combien d'yeux chaque pirate a-t-il?


Exemple de solution
 df <- tidyr::crossing(a = 0:2, b = 0:2, c = 0:2) %>% mutate(total = a + b + c) %>% mutate(a_lie = (b != 2) + (total != 2), b_lie = (c != 2) + (total != 3), c_lie = (a != 2) + (total != 4)) %>% filter(a_lie == a, b_lie == b, c_lie == c) df 

Etc. etc.


Pour certains, cela peut ĂȘtre l'occasion de passer du temps avec votre enfant.


Article précédent - «Quelques considérations pour le calcul parallÚle dans R pour les tùches« d'entreprise »» .

Source: https://habr.com/ru/post/fr462619/


All Articles