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:
- 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.
- 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 »» .