{"id":2578,"date":"2016-11-15T06:00:14","date_gmt":"2016-11-15T04:00:14","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2578"},"modified":"2016-11-22T07:18:00","modified_gmt":"2016-11-22T05:18:00","slug":"cuadrados-ondulantes","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/cuadrados-ondulantes\/","title":{"rendered":"Cuadrados ondulantes"},"content":{"rendered":"<p>Un n\u00famero se dice <strong>ondulante<\/strong> si sus cifras alternan entre dos valores. Por ejemplo, 272 es ondulante, as\u00ed como 2727. El  primer <strong>cuadrado ondulante<\/strong> no trivial (todos los cuadrados de dos cifras son ondulantes) es 121 = 11^2.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   cuadradosOndulantes :: Integer -> [Integer]\n<\/pre>\n<p>tal que (cuadradosOndulantes n) es la lista de los cuadrados ondulantes menores que n^2. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> cuadradosOndulantes 50000\n   [0,1,4,9,16,25,36,49,64,81,121,484,676,69696]\n<\/pre>\n<p><strong>Nota<\/strong>: Este ejercicio ha sido propuesto por Marcos Gir\u00e1ldez.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (isPrefixOf)\n\ncuadradosOndulantes :: Integer -> [Integer]\ncuadradosOndulantes n =\n  [x^2 | x <- [0..n]\n       , ondulante (x^2)]\n\n-- 1\u00aa definici\u00f3n de ondulante\nondulante1 :: Integer -> Bool\nondulante1 n\n  | n < 100   = True\n  | otherwise = aux zs x y\n  where (x:y:zs)       = show n\n        aux [] _ _     = True\n        aux (c:cs) a b = c == a &#038;&#038; aux cs b a\n\n-- 2\u00aa definici\u00f3n de ondulante\nondulante2 :: Integer -> Bool\nondulante2 n = (drop 2 xs) `isPrefixOf` xs\n  where xs = show n\n\n-- Comparaci\u00f3n de eficiencia\n--    \u03bb> length [n | n <- [1..10^6], ondulante1 n]\n--    459\n--    (5.73 secs, 1,115,105,408 bytes)\n--    \u03bb> length [n | n <- [1..10^6], ondulante2 n]\n--    459\n--    (2.01 secs, 467,856,432 bytes)\n\n-- Se usar\u00e1 como ondulante la 2\u00aa\nondulante :: Integer -> Bool\nondulante = ondulante2\n<\/pre>\n<h4>Referencias<\/h4>\n<ul>\n<li><a href=\"https:\/\/oeis.org\/A016073\">Sucesi\u00f3n A016073 de la OEIS<\/a>.<\/li>\n<li><a href=\"http:\/\/bit.ly\/2frZg69\">Undulating number<\/a> de Eric W. Weisstein en <a href=\"http:\/\/bit.ly\/2euLXTn\">MathWorld<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Un n\u00famero se dice ondulante si sus cifras alternan entre dos valores. Por ejemplo, 272 es ondulante, as\u00ed como 2727. El primer cuadrado ondulante no trivial (todos los cuadrados de dos cifras son ondulantes) es 121 = 11^2. Definir la funci\u00f3n cuadradosOndulantes :: Integer -> [Integer] tal que (cuadradosOndulantes n) es la lista de los&#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":[4],"tags":[46,170,33],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2578"}],"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=2578"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2578\/revisions"}],"predecessor-version":[{"id":2606,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2578\/revisions\/2606"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}