lambdaway
::
habiter
3
|
list
|
login
|
load
|
|
{center [[rationals]] | [[rationals2]] | [[fractions]] | [[fractions2]] | habiter} _img http://villemin.gerard.free.fr/Wwwgvmm/Nombre/Rac2Val_fichiers/image052.jpg _h1 où habitez-vous ? _p Vous habitez dans une rue dont les maisons (en nombre fini bien sûr) sont numérotées 1, 2, 3, · · · (il n’y a pas de côté pair et de côté impair). Vous remarquez que la somme des nombres des maisons situées à gauche de la vôtre est égale à celle des nombres des maisons situées à droite. Où habitez-vous ? _h2 code lambdatalk (version 1) {pre '{def find {def find.equality {lambda {:n :i} {if {= {+ {S.serie 1 {- :i 1}}} {+ {S.serie {+ :i 1} :n}}} then {cons :n :i} else x}}} {lambda {:n} {S.replace x by in {S.map {find.equality :n} {S.serie 1 :n}}}}} -> {def find {def find.equality {lambda {:n :i} {if {= {+ {S.serie 1 {- :i 1}}} {+ {S.serie {+ :i 1} :n}}} then {cons :n :i} else x}}} {lambda {:n} {S.replace x by in {S.map {find.equality :n} {S.serie 1 :n}}}}} } _p Liste des couples {b (n i)} satisfaisant la condition jusqu'à {b n=300}. {pre '{S.replace space by in {S.map find {S.serie 1 300}}} -> (8 6) (49 35) (288 204) } _h2 version jpr (python) {pre {@ style="transform:rotate(-2deg); padding:5px; box-shadow:0 0 8px #000;"} def tester(n): for i in range(1,n+1): if sum(range(1,i)) == sum(range(i+1,n+1)): return(n,i) for n in range(1,1001): sol = tester(n) if sol: print(f'n='{n} et i='{sol[1]}') n=1 et i=1 n=8 et i=6 n=49 et i=35 n=288 et i=204 } _h2 traduction lambdatalk {pre '{def tester {def tester.rec {lambda {:n :i} {if {> :i {+ :n 1}} then true else {if {= {+ {S.serie 1 :i}} {+ {S.serie :i :n}}} then n=:n & i=:i else {tester.rec :n {+ :i 1}} }}}} {lambda {:n} {tester.rec :n 1}}} -> {def tester {def tester.rec {lambda {:n :i} {if {> :i {+ :n 1}} then true else {if {= {+ {S.serie 1 :i}} {+ {S.serie :i :n}}} then n=:n & i=:i else {tester.rec :n {+ :i 1}} }}}} {lambda {:n} {tester.rec :n 1}}} '{S.map {lambda {:n} {let { {:sol {tester :n}} } {if :sol then else {br}:sol} }} {S.serie 1 300}} -> n=1 & i=1 n=8 & i=6 n=49 & i=35 n=288 & i=204 } _h2 note finale jpr {div {@ style="transform:rotate(-2deg); padding:5px; box-shadow:0 0 8px #000; background:#eee; "} « Je pense qu'on peut accélérer notablement car lorsqu'on a vérifié {b 1+2+...+(i-1) == (i+1)+...+n} il suffit d'une addition et d'une soustraction pour passer à la vérification suivante, non ? » } _h2 code lambdatalk (version 2) _p En effet il suffit d'ajouter deux accumulateurs, {b :s0 & :s1} initialisés à {b 1 & S(n)}: {pre '{def tester2 {def tester2.rec {lambda {:n :i :s0 :s1} {if {> :s0 :s1} then true else {if {= :s0 :s1} then Pour :n maisons on est au numéro :i (sommes gauche & droite = {- :s0 :i}) else {tester2.rec :n {+ :i 1} {+ :s0 {+ :i 1}} {- :s1 :i}} }}}} {lambda {:n} {tester2.rec :n 1 // :i 1 // :s0 {/ {* :n {+ :n 1}} 2} // :s1 = S(n) }}} -> {def tester2 {def tester2.rec {lambda {:n :i :s0 :s1} {if {> :s0 :s1} then true else {if {= :s0 :s1} then Pour :n maisons on est au numéro :i (sommes gauche & droite = {- :s0 :i}) else {tester2.rec :n {+ :i 1} {+ :s0 {+ :i 1}} {- :s1 :i}} }}}} {lambda {:n} {tester2.rec :n 1 1 {/ {* :n {+ :n 1}} 2}}}} '{S.map {lambda {:n} {let { {:sol {tester2 :n}} } {if :sol then else {br}:sol} }} {S.serie 1 2000}} -> Pour 1 maisons on est au numéro 1 (sommes gauche & droite = 0) Pour 8 maisons on est au numéro 6 (sommes gauche & droite = 15) Pour 49 maisons on est au numéro 35 (sommes gauche & droite = 595) Pour 288 maisons on est au numéro 204 (sommes gauche & droite = 20706) Pour 1681 maisons on est au numéro 1189 (sommes gauche & droite = 706266) } _p Quelle peut être la loi de distribution des couples {b (n i)} ? {pre '{/ 8 1} -> {/ 8 1} '{/ 49 8} -> {/ 49 8} '{/ 288 49} -> {/ 288 49} '{/ 1681 288} -> {/ 1681 288} quand n -> ∞ -> ??? '{/ 6 1} -> {/ 6 1} '{/ 35 6} -> {/ 35 6} '{/ 204 35} -> {/ 204 35} '{/ 1189 284} -> {/ 1189 284} quand n -> ∞ -> ??? n/i '{/ 1 1} -> {/ 1 1} '{/ 8 6} -> {/ 8 6} '{/ 49 35} -> {/ 49 35} '{/ 288 204} -> {/ 288 204} '{/ 1681 1189} -> {/ 1681 1189} quand n -> ∞ -> {sqrt 2} = √2 peut-être ??? } _p Merci pour tout jpr. (am) _p 2022/04/15-16 {hr} _h2 suite _p Explorations complémentaires sur l'équation de Pell, les [[fractions]] continues, ... _p références : _ul [[villemin.gerard.free.fr...Maison|http://villemin.gerard.free.fr/aJeux1/Arithmet/Maison.htm]] _ul [[ramanujan|https://www.math.auckland.ac.nz/~butcher/miniature/miniature2.pdf]] _ul [[totient.wordpress.com/|https://totient.wordpress.com/]] _ul [[villemin.gerard.free.fr...Rac2Val.htm#Fraction|villemin.gerardNombre...Rac2Val.htm#Fraction]] _p En vrac : {prewrap √2 = 1 + 1 {{bt}2 + 1} {{bt}2 + 1} {{bt}2 + 1} {{bt}2 + ...} = [1,2,2,2,2,...] '{def √2 {lambda {:n} {if {= :n 0} then 1 else {/ 1 {+ 2 {√2 {- :n 1}}}}}}} -> {def √2 {lambda {:n} {if {= :n 0} then 1 else {/ 1 {+ 2 {√2 {- :n 1}}}}}}} '{S.map √2 {S.serie 1 10}} -> {S.map √2 {S.serie 1 10}} -> partie décimale de √2 '{+ 1 {√2 2}} -> {+ 1 {√2 2}} Il existe une infinité de possibilités qui se déduisent d'un calcul avec les réduites de racine de 2. réduites de √2 = x/y, pouy y impair avec m = (x-1)/2 et n = y/2 (équation de Pell) x y '{/ 7 5} -> {/ 7 5} -> m=8 & n=6 '{/ 41 29} -> {/ 41 29} -> m=49 & n=35 '{/ 577 408} -> {/ 577 408} -> m=288 & n=204 '{/ 3363 2378} -> {/ 3363 2378} -> m=1681 & n=1189 ... 1+1/2 = 3/2 1+1/(2+1/2) = 1+1/(5/2) = 1+2/5 = 7/5 1+1/(2+1/(2+1/2)) = 1+1/(2+1/(5/2)) = 1+1/(2+2/5) = 1+1/(12/5) = 1+5/12 = 17/12 (2 1) + (1 2) -> (4 2) + (1 2) -> (5 2) } _p A suivre dans la page [[rationals]]. {{hide} {def bt span {@ style="border-top:1px solid;"}} } {style pre { box-shadow:0 0 8px #000; padding:5px; background:#eee; } }
lambdaway v.20211111