{"id":3301,"date":"2017-05-12T06:00:38","date_gmt":"2017-05-12T04:00:38","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3301"},"modified":"2017-05-11T22:40:57","modified_gmt":"2017-05-11T20:40:57","slug":"el-problema-de-la-bicicleta-de-turing","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/el-problema-de-la-bicicleta-de-turing\/","title":{"rendered":"El problema de la bicicleta de Turing"},"content":{"rendered":"<p>Cuentan que Alan Turing ten\u00eda una bicicleta vieja, que ten\u00eda una cadena con un eslab\u00f3n d\u00e9bil y adem\u00e1s uno de los radios de la rueda estaba doblado. Cuando el radio doblado coincid\u00eda con el eslab\u00f3n d\u00e9bil, entonces la cadena se romp\u00eda.<\/p>\n<p>La bicicleta se identifica por los par\u00e1metros (i,d,n) donde<\/p>\n<ul>\n<li>i es el n\u00famero del eslab\u00f3n que coincide con el radio doblado al empezar a andar,<\/li>\n<li>d es el n\u00famero de eslabones que se desplaza la cadena en cada vuelta de la rueda y<\/li>\n<li>n es el n\u00famero de eslabones de la cadena (el n\u00famero n es el d\u00e9bil).<\/li>\n<\/ul>\n<p>Si i = 2, d = 7 y n = 25, entonces la lista con el n\u00famero de eslab\u00f3n que toca el radio doblado en cada vuelta es<\/p>\n<pre lang=\"text\">\n   [2,9,16,23,5,12,19,1,8,15,22,4,11,18,0,7,14,21,3,10,17,24,6,...\n<\/pre>\n<p>Con lo que la cadena se rompe en la vuelta n\u00famero 14.<\/p>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   eslabones :: Int -> Int -> Int -> [Int]\n   numeroVueltas :: Int -> Int -> Int -> Int \n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(eslabones i d n) es la lista con los n\u00fameros de eslabones  que tocan el radio doblado en cada vuelta en una bicicleta de tipo (i,d,n). Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">\n     take 10 (eslabones 2 7 25)  ==  [2,9,16,23,5,12,19,1,8,15]\n<\/pre>\n<ul>\n<li>(numeroVueltas i d n) es el n\u00famero de vueltas que pasar\u00e1n  hasta que la cadena se rompa en una bicicleta de tipo (i,d,n). Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     numeroVueltas 2 7 25  ==  14\n<\/pre>\n<h4>Soluciones<\/h4>\n<p>[schedule expon=&#8217;2017-05-19&#8242; expat=\u00bb06:00&#8243;]<\/p>\n<ul>\n<li>Las soluciones se pueden escribir en los comentarios hasta el 19 de mayo.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\u00bbhaskell\u00bb&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<p>[\/schedule]<\/p>\n<p>[schedule on=&#8217;2017-05-19&#8242; at=\u00bb06:00&#8243;]<\/p>\n<pre lang=\"haskell\">\r\n-- 1\u00aa definici\u00f3n\r\neslabones :: Int -> Int -> Int -> [Int]\r\neslabones i d n = [(i+d*j) `mod` n | j <- [0..]]\r\n\r\n-- 2\u00aa definici\u00f3n (con iterate):\r\neslabones2 :: Int -> Int -> Int -> [Int]\r\neslabones2 i d n = map (\\x-> mod x n) (iterate (+d) i)\r\n\r\nnumeroVueltas :: Int -> Int -> Int -> Int\r\nnumeroVueltas i d n = length (takeWhile (\/=0) (eslabones i d n)) \r\n<\/pre>\n<p>[\/schedule]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuentan que Alan Turing ten\u00eda una bicicleta vieja, que ten\u00eda una cadena con un eslab\u00f3n d\u00e9bil y adem\u00e1s uno de los radios de la rueda estaba doblado. Cuando el radio doblado coincid\u00eda con el eslab\u00f3n d\u00e9bil, entonces la cadena se romp\u00eda. La bicicleta se identifica por los par\u00e1metros (i,d,n) donde i es el n\u00famero del&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[2],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3301"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=3301"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3301\/revisions"}],"predecessor-version":[{"id":3303,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3301\/revisions\/3303"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}