{"id":3734,"date":"2018-02-15T06:00:05","date_gmt":"2018-02-15T04:00:05","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3734"},"modified":"2018-02-22T07:06:17","modified_gmt":"2018-02-22T05:06:17","slug":"numeros-que-no-son-cuadrados","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/numeros-que-no-son-cuadrados\/","title":{"rendered":"N\u00fameros que no son cuadrados"},"content":{"rendered":"<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   noCuadrados :: [Integer]\n   graficaNoCuadrados :: Integer -> IO ()\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>noCuadrados es la lista de los n\u00fameros naturales que no son cuadrados. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> take 25 noCuadrados\n     [2,3,5,6,7,8,10,11,12,13,14,15,17,18,19,20,21,22,23,24,26,27,28,29,30]\n<\/pre>\n<ul>\n<li>(graficaNoCuadrados n) dibuja las diferencias entre los n primeros elementos de noCuadrados y sus posiciones. Por ejemplo, (graficaNoCuadrados 300) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png?resize=640%2C480\" alt=\"Numeros_que_no_son_cuadrados_300\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3737\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_300.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><br \/>\n(graficaNoCuadrados 3000) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png?resize=640%2C480\" alt=\"Numeros_que_no_son_cuadrados_3000\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3738\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_3000.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><br \/>\n(graficaNoCuadrados 30000) dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png?resize=640%2C480\" alt=\"Numeros_que_no_son_cuadrados_30000\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3739\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2018\/02\/Numeros_que_no_son_cuadrados_30000.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/li>\n<\/ul>\n<p>Comprobar con QuickCheck que el t\u00e9rmino de noCuadrados en la posici\u00f3n n-1 es (n + floor(1\/2 + sqrt(n))).<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (genericIndex)\nimport Graphics.Gnuplot.Simple\nimport Test.QuickCheck\n\n-- 1\u00aa definici\u00f3n\n-- =============\n\nnoCuadrados :: [Integer]\nnoCuadrados = aux [0..] cuadrados\n  where aux xs (y:ys) = as ++ aux bs ys\n          where (as,_:bs) = span (<y) xs\n\ncuadrados :: [Integer]\ncuadrados = [x^2 | x <- [0..]]\n\n-- 2\u00aa definici\u00f3n\n-- =============\n\nnoCuadrados2 :: [Integer]\nnoCuadrados2 = aux 2 [1..]\n  where aux n (_:xs) = ys ++ aux (n+2) zs\n          where (ys,zs) = splitAt n xs\n\n-- Definici\u00f3n de graficaNoCuadrados\n-- ================================\n\ngraficaNoCuadrados :: Integer -> IO ()\ngraficaNoCuadrados n =\n  plotList [ Key Nothing\n           , PNG (\"Numeros_que_no_son_cuadrados_\" ++ show n ++ \".png\")\n           ]\n           (zipWith (-) noCuadrados [0..n-1])\n\n-- La propiedad es\nprop_noCuadrados :: Positive Integer -> Bool\nprop_noCuadrados (Positive n) =\n  noCuadrados `genericIndex` (n-1) ==\n  n + floor (1\/2 + sqrt (fromIntegral n))\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_noCuadrados\n--    +++ OK, passed 100 tests.\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Definir las funciones noCuadrados :: [Integer] graficaNoCuadrados :: Integer -> IO () tales que noCuadrados es la lista de los n\u00fameros naturales que no son cuadrados. Por ejemplo, \u03bb> take 25 noCuadrados [2,3,5,6,7,8,10,11,12,13,14,15,17,18,19,20,21,22,23,24,26,27,28,29,30] (graficaNoCuadrados n) dibuja las diferencias entre los n primeros elementos de noCuadrados y sus posiciones. Por ejemplo, (graficaNoCuadrados 300) dibuja (graficaNoCuadrados 3000)&#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":[5],"tags":[8,282,183,256,415,11,6,60,236,146,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3734"}],"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=3734"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3734\/revisions"}],"predecessor-version":[{"id":3805,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3734\/revisions\/3805"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}