From 8487fe3f219c99dc720f99e2d53197c211deaf5b Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 31 Jan 2022 15:50:18 +0100 Subject: Week 150: Solutions --- challenge-150/abigail/README.md | 14 ++++++ challenge-150/abigail/awk/ch-1.awk | 21 +++++++++ challenge-150/abigail/awk/ch-2.awk | 23 ++++++++++ challenge-150/abigail/bash/ch-1.sh | 22 +++++++++ challenge-150/abigail/bash/ch-2.sh | 23 ++++++++++ challenge-150/abigail/basic/ch-2.bas | 9 ++++ challenge-150/abigail/bc/ch-1.bc | 40 +++++++++++++++++ challenge-150/abigail/bc/ch-2.bc | 34 ++++++++++++++ challenge-150/abigail/befunge-93/ch-2.bf93 | 20 +++++++++ challenge-150/abigail/c/ch-1.c | 72 ++++++++++++++++++++++++++++++ challenge-150/abigail/c/ch-2.c | 31 +++++++++++++ challenge-150/abigail/cobol/ch-2.cb | 40 +++++++++++++++++ challenge-150/abigail/csh/ch-2.csh | 11 +++++ challenge-150/abigail/erlang/ch-2.erl | 15 +++++++ challenge-150/abigail/forth/ch-2.fs | 5 +++ challenge-150/abigail/fortran/ch-2.f90 | 32 +++++++++++++ challenge-150/abigail/go/ch-1.go | 35 +++++++++++++++ challenge-150/abigail/go/ch-2.go | 30 +++++++++++++ challenge-150/abigail/java/ch-1.java | 27 +++++++++++ challenge-150/abigail/java/ch-2.java | 28 ++++++++++++ challenge-150/abigail/lua/ch-1.lua | 19 ++++++++ challenge-150/abigail/lua/ch-2.lua | 27 +++++++++++ challenge-150/abigail/m4/ch-2.m4 | 1 + challenge-150/abigail/mmix/ch-2.mms | 44 ++++++++++++++++++ challenge-150/abigail/node/ch-1.js | 21 +++++++++ challenge-150/abigail/node/ch-2.js | 23 ++++++++++ challenge-150/abigail/ocaml/ch-2.ml | 9 ++++ challenge-150/abigail/pascal/ch-1.p | 32 +++++++++++++ challenge-150/abigail/pascal/ch-2.p | 29 ++++++++++++ challenge-150/abigail/perl/ch-1.pl | 34 ++++++++++++++ challenge-150/abigail/perl/ch-2.pl | 47 +++++++++++++++++++ challenge-150/abigail/php/ch-2.php | 11 +++++ challenge-150/abigail/postscript/ch-2.ps | 10 +++++ challenge-150/abigail/python/ch-1.py | 17 +++++++ challenge-150/abigail/python/ch-2.py | 22 +++++++++ challenge-150/abigail/r/ch-1.r | 27 +++++++++++ challenge-150/abigail/r/ch-2.r | 24 ++++++++++ challenge-150/abigail/rexx/ch-2.rexx | 9 ++++ challenge-150/abigail/ruby/ch-1.rb | 17 +++++++ challenge-150/abigail/ruby/ch-2.rb | 24 ++++++++++ challenge-150/abigail/scheme/ch-1.scm | 33 ++++++++++++++ challenge-150/abigail/scheme/ch-2.scm | 31 +++++++++++++ challenge-150/abigail/sed/ch-2.sed | 12 +++++ challenge-150/abigail/sql/ch-2.sql | 9 ++++ challenge-150/abigail/t/ctest.ini | 20 +++++++++ challenge-150/abigail/t/input-1-1 | 1 + challenge-150/abigail/t/input-2-1 | 1 + challenge-150/abigail/t/output-1-1.exp | 1 + challenge-150/abigail/t/output-2-1.exp | 1 + challenge-150/abigail/tcl/ch-1.tcl | 17 +++++++ challenge-150/abigail/tcl/ch-2.tcl | 25 +++++++++++ 51 files changed, 1130 insertions(+) create mode 100644 challenge-150/abigail/awk/ch-1.awk create mode 100644 challenge-150/abigail/awk/ch-2.awk create mode 100644 challenge-150/abigail/bash/ch-1.sh create mode 100644 challenge-150/abigail/bash/ch-2.sh create mode 100644 challenge-150/abigail/basic/ch-2.bas create mode 100644 challenge-150/abigail/bc/ch-1.bc create mode 100644 challenge-150/abigail/bc/ch-2.bc create mode 100644 challenge-150/abigail/befunge-93/ch-2.bf93 create mode 100644 challenge-150/abigail/c/ch-1.c create mode 100644 challenge-150/abigail/c/ch-2.c create mode 100644 challenge-150/abigail/cobol/ch-2.cb create mode 100644 challenge-150/abigail/csh/ch-2.csh create mode 100644 challenge-150/abigail/erlang/ch-2.erl create mode 100644 challenge-150/abigail/forth/ch-2.fs create mode 100644 challenge-150/abigail/fortran/ch-2.f90 create mode 100644 challenge-150/abigail/go/ch-1.go create mode 100644 challenge-150/abigail/go/ch-2.go create mode 100644 challenge-150/abigail/java/ch-1.java create mode 100644 challenge-150/abigail/java/ch-2.java create mode 100644 challenge-150/abigail/lua/ch-1.lua create mode 100644 challenge-150/abigail/lua/ch-2.lua create mode 100644 challenge-150/abigail/m4/ch-2.m4 create mode 100644 challenge-150/abigail/mmix/ch-2.mms create mode 100644 challenge-150/abigail/node/ch-1.js create mode 100644 challenge-150/abigail/node/ch-2.js create mode 100644 challenge-150/abigail/ocaml/ch-2.ml create mode 100644 challenge-150/abigail/pascal/ch-1.p create mode 100644 challenge-150/abigail/pascal/ch-2.p create mode 100644 challenge-150/abigail/perl/ch-1.pl create mode 100644 challenge-150/abigail/perl/ch-2.pl create mode 100644 challenge-150/abigail/php/ch-2.php create mode 100644 challenge-150/abigail/postscript/ch-2.ps create mode 100644 challenge-150/abigail/python/ch-1.py create mode 100644 challenge-150/abigail/python/ch-2.py create mode 100644 challenge-150/abigail/r/ch-1.r create mode 100644 challenge-150/abigail/r/ch-2.r create mode 100644 challenge-150/abigail/rexx/ch-2.rexx create mode 100644 challenge-150/abigail/ruby/ch-1.rb create mode 100644 challenge-150/abigail/ruby/ch-2.rb create mode 100644 challenge-150/abigail/scheme/ch-1.scm create mode 100644 challenge-150/abigail/scheme/ch-2.scm create mode 100644 challenge-150/abigail/sed/ch-2.sed create mode 100644 challenge-150/abigail/sql/ch-2.sql create mode 100644 challenge-150/abigail/t/ctest.ini create mode 100644 challenge-150/abigail/t/input-1-1 create mode 100644 challenge-150/abigail/t/input-2-1 create mode 100644 challenge-150/abigail/t/output-1-1.exp create mode 100644 challenge-150/abigail/t/output-2-1.exp create mode 100644 challenge-150/abigail/tcl/ch-1.tcl create mode 100644 challenge-150/abigail/tcl/ch-2.tcl (limited to 'challenge-150/abigail') diff --git a/challenge-150/abigail/README.md b/challenge-150/abigail/README.md index c6c703c150..352bb54018 100644 --- a/challenge-150/abigail/README.md +++ b/challenge-150/abigail/README.md @@ -25,15 +25,29 @@ * [Bash](bash/ch-2.sh) * [Basic](basic/ch-2.bas) * [Bc](bc/ch-2.bc) +* [Befunge-93](befunge-93/ch-2.bf93) * [C](c/ch-2.c) +* [Cobol](cobol/ch-2.cb) +* [Csh](csh/ch-2.csh) +* [Erlang](lua/ch-2.erl) +* [Forth](lua/ch-2.fs) +* [Fortran](fortran/ch-2.f90) * [Go](go/ch-2.go) * [Java](java/ch-2.java) * [Lua](lua/ch-2.lua) +* [m4](m4/ch-2.m4) +* [MMIX](mmix/ch-2.mms) * [Node.js](node/ch-2.js) +* [OCaml](ocaml/ch-2.ml) * [Pascal](pascal/ch-2.p) * [Perl](perl/ch-2.pl) +* [PHP](php/ch-2.php) +* [PostScript](postscript/ch-2.ps) * [Python](python/ch-2.py) * [R](r/ch-2.r) +* [Rexx](rexx/ch-2.rexx) * [Ruby](ruby/ch-2.rb) * [Scheme](scheme/ch-2.scm) +* [Sed](sed/ch-2.sed) +* [SQL](sql/ch-2.sql) * [Tcl](tcl/ch-2.tcl) diff --git a/challenge-150/abigail/awk/ch-1.awk b/challenge-150/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..9ec6a35d22 --- /dev/null +++ b/challenge-150/abigail/awk/ch-1.awk @@ -0,0 +1,21 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +{ + fib_prev = $1 + fib_last = $2 + LENGTH = 51 + while (length (fib_last) < LENGTH) { + fib_tmp = fib_last + fib_last = fib_prev fib_last + fib_prev = fib_tmp + } + print substr (fib_last, LENGTH, 1) +} diff --git a/challenge-150/abigail/awk/ch-2.awk b/challenge-150/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..a3d1583f40 --- /dev/null +++ b/challenge-150/abigail/awk/ch-2.awk @@ -0,0 +1,23 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: awk -f ch-2.awk +# + +BEGIN { + split ("2 3 5 7 11 13 17 19", primes) + for (n = 1; n <= 500; n ++) { + s = 1 + for (p = 1; p <= 8 && s; p ++) { + s *= n % (primes [p] * primes [p]) + } + if (s) { + printf "%d ", n + } + } + printf "\n" +} diff --git a/challenge-150/abigail/bash/ch-1.sh b/challenge-150/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..b45b0b36a7 --- /dev/null +++ b/challenge-150/abigail/bash/ch-1.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: bash ch-1.sh < input-file +# + +set -f + +LENGTH=51 + +while read fib_prev fib_last +do while ((${#fib_last} < LENGTH)) + do fib_tmp=$fib_last + fib_last=$fib_prev$fib_last + fib_prev=$fib_tmp + done + echo ${fib_last:$((LENGTH - 1)):1} +done diff --git a/challenge-150/abigail/bash/ch-2.sh b/challenge-150/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..0fe90e5309 --- /dev/null +++ b/challenge-150/abigail/bash/ch-2.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: bash ch-2.sh +# + +set -f +PRIMES=(2 3 5 7 11 13 17 19) + +for ((n = 1; n <= 500; n ++)) +do for p in ${PRIMES[@]} + do if ((n % (p * p) == 0)) + then continue 2 + fi + done + printf "%d " $n +done + +echo diff --git a/challenge-150/abigail/basic/ch-2.bas b/challenge-150/abigail/basic/ch-2.bas new file mode 100644 index 0000000000..06f8c081da --- /dev/null +++ b/challenge-150/abigail/basic/ch-2.bas @@ -0,0 +1,9 @@ +010 REM +020 REM See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +030 REM + +040 REM +050 REM Run as: basic ch-2.bas +060 REM + +100 PRINT "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499" diff --git a/challenge-150/abigail/bc/ch-1.bc b/challenge-150/abigail/bc/ch-1.bc new file mode 100644 index 0000000000..e3e0c0c1a9 --- /dev/null +++ b/challenge-150/abigail/bc/ch-1.bc @@ -0,0 +1,40 @@ +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: bc ch-1.bc < input-file +# + +while (1) { + fib_prev = read () + if (fib_prev == 0) { + break + } + fib_last = read () + if (fib_last == 0) { + break + } + + while (fib_last < 10 ^ 51) { + fib_tmp = fib_last + t = fib_last + fib_last = fib_prev + while (t > 0) { + fib_last = fib_last * 10 + t = t / 10 + } + fib_last = fib_last + fib_tmp + fib_prev = fib_tmp + } + + while (fib_last > 10 ^ 51) { + fib_last = fib_last / 10 + } + + fib_last % 10 +} + +halt diff --git a/challenge-150/abigail/bc/ch-2.bc b/challenge-150/abigail/bc/ch-2.bc new file mode 100644 index 0000000000..0959bad153 --- /dev/null +++ b/challenge-150/abigail/bc/ch-2.bc @@ -0,0 +1,34 @@ +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: bc ch-2.bc +# + +primes [1] = 2 +primes [2] = 3 +primes [3] = 5 +primes [4] = 7 +primes [5] = 11 +primes [6] = 13 +primes [7] = 17 +primes [8] = 19 + +for (n = 1; n <= 500; n ++) { + s = 0 + for (p = 1; p <= 8 && !s; p ++) { + if (n % (primes [p] * primes [p]) == 0) { + s = 1 + } + } + if (!s) { + print n, " " + } +} +" +" + +halt diff --git a/challenge-150/abigail/befunge-93/ch-2.bf93 b/challenge-150/abigail/befunge-93/ch-2.bf93 new file mode 100644 index 0000000000..70f8f91912 --- /dev/null +++ b/challenge-150/abigail/befunge-93/ch-2.bf93 @@ -0,0 +1,20 @@ + ^ diff --git a/challenge-150/abigail/c/ch-1.c b/challenge-150/abigail/c/ch-1.c new file mode 100644 index 0000000000..041152435e --- /dev/null +++ b/challenge-150/abigail/c/ch-1.c @@ -0,0 +1,72 @@ +# include +# include +# include +# include + +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 + */ + +/* + * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o < input-file + */ + +# define LENGTH 51 + +int main (void) { + char * line = NULL; + size_t len = 0; + size_t str_len; + + while ((str_len = getline (&line, &len, stdin)) != -1) { + char * ptr = line; + char fib_tmp [ LENGTH]; + char fib_prev [ LENGTH]; + char fib_last [2 * LENGTH]; + size_t p = 0; + size_t l = 0; + size_t t = 0; + + /* + * Split input + */ + while (!isspace (* ptr)) { + fib_prev [p ++] = * ptr ++; + } + while (isspace (* ptr)) { + ptr ++; + } + while (!isspace (* ptr)) { + fib_last [l ++] = * ptr ++; + } + while (l < LENGTH) { + /* + * We could just "shift" the content of fib_last, and + * not use fib_temp, but let's use the same algorithm + * as we use in different languages. + */ + + /* fib_tmp = fib_last */ + for (t = 0; t < l; t ++) { + fib_tmp [t] = fib_last [t]; + } + + /* fib_last = fib_prev + fib_last (= fib_tmp) */ + for (l = 0; l < p; l ++) { + fib_last [l] = fib_prev [l]; + } + for (size_t i = 0; i < t; i ++) { + fib_last [l ++] = fib_tmp [i]; + } + + /* fib_prev = fib_tmp */ + for (p = 0; p < t; p ++) { + fib_prev [p] = fib_tmp [p]; + } + } + printf ("%c\n", fib_last [LENGTH - 1]); + } + free (line); + + return (0); +} diff --git a/challenge-150/abigail/c/ch-2.c b/challenge-150/abigail/c/ch-2.c new file mode 100644 index 0000000000..c4fd5f70b0 --- /dev/null +++ b/challenge-150/abigail/c/ch-2.c @@ -0,0 +1,31 @@ +# include +# include +# include +# include + +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 + */ + +/* + * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o + */ + +# define MAX 500 +# define P 8 + +int main (void) { + short primes [P] = {2, 3, 5, 7, 11, 13, 17, 19}; + for (short n = 1; n <= MAX; n ++) { + bool has_square = false; + for (size_t p = 0; p < P && !has_square; p ++) { + if (n % (primes [p] * primes [p]) == 0) { + has_square = true; + } + } + if (!has_square) { + printf ("%d ", n); + } + } + printf ("\n"); +} diff --git a/challenge-150/abigail/cobol/ch-2.cb b/challenge-150/abigail/cobol/ch-2.cb new file mode 100644 index 0000000000..13e31bb690 --- /dev/null +++ b/challenge-150/abigail/cobol/ch-2.cb @@ -0,0 +1,40 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. XXX. + +*> +*> See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +*> + +*> +*> Run as: cobc -xF -o ch-2.o ch-2.cb; ./ch-2.o +*> + +PROCEDURE DIVISION. + DISPLAY "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23" WITH NO ADVANCING + DISPLAY " 26 29 30 31 33 34 35 37 38 39 41 42 43 46" WITH NO ADVANCING + DISPLAY " 47 51 53 55 57 58 59 61 62 65 66 67 69 70" WITH NO ADVANCING + DISPLAY " 71 73 74 77 78 79 82 83 85 86 87 89 91 93" WITH NO ADVANCING + DISPLAY " 94 95 97 101 102 103 105 106 107 109 110 111" WITH NO ADVANCING + DISPLAY " 113 114 115 118 119 122 123 127 129 130 131" WITH NO ADVANCING + DISPLAY " 133 134 137 138 139 141 142 143 145 146 149" WITH NO ADVANCING + DISPLAY " 151 154 155 157 158 159 161 163 165 166 167" WITH NO ADVANCING + DISPLAY " 170 173 174 177 178 179 181 182 183 185 186" WITH NO ADVANCING + DISPLAY " 187 190 191 193 194 195 197 199 201 202 203" WITH NO ADVANCING + DISPLAY " 205 206 209 210 211 213 214 215 217 218 219" WITH NO ADVANCING + DISPLAY " 221 222 223 226 227 229 230 231 233 235 237" WITH NO ADVANCING + DISPLAY " 238 239 241 246 247 249 251 253 254 255 257" WITH NO ADVANCING + DISPLAY " 258 259 262 263 265 266 267 269 271 273 274" WITH NO ADVANCING + DISPLAY " 277 278 281 282 283 285 286 287 290 291 293" WITH NO ADVANCING + DISPLAY " 295 298 299 301 302 303 305 307 309 310 311" WITH NO ADVANCING + DISPLAY " 313 314 317 318 319 321 322 323 326 327 329" WITH NO ADVANCING + DISPLAY " 330 331 334 335 337 339 341 345 346 347 349" WITH NO ADVANCING + DISPLAY " 353 354 355 357 358 359 362 365 366 367 370" WITH NO ADVANCING + DISPLAY " 371 373 374 377 379 381 382 383 385 386 389" WITH NO ADVANCING + DISPLAY " 390 391 393 394 395 397 398 399 401 402 403" WITH NO ADVANCING + DISPLAY " 406 407 409 410 411 413 415 417 418 419 421" WITH NO ADVANCING + DISPLAY " 422 426 427 429 430 431 433 434 435 437 438" WITH NO ADVANCING + DISPLAY " 439 442 443 445 446 447 449 451 453 454 455" WITH NO ADVANCING + DISPLAY " 457 458 461 462 463 465 466 467 469 470 471" WITH NO ADVANCING + DISPLAY " 473 474 478 479 481 482 483 485 487 489 491" WITH NO ADVANCING + DISPLAY " 493 494 497 498 499". + STOP RUN. diff --git a/challenge-150/abigail/csh/ch-2.csh b/challenge-150/abigail/csh/ch-2.csh new file mode 100644 index 0000000000..f7395be4f6 --- /dev/null +++ b/challenge-150/abigail/csh/ch-2.csh @@ -0,0 +1,11 @@ +#!/bin/csh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: csh ch-2.csh +# + +echo "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499" diff --git a/challenge-150/abigail/erlang/ch-2.erl b/challenge-150/abigail/erlang/ch-2.erl new file mode 100644 index 0000000000..ab2ddaf39f --- /dev/null +++ b/challenge-150/abigail/erlang/ch-2.erl @@ -0,0 +1,15 @@ +% +% See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +% + +% +% Run as: ln ch-2.erl ch2.erl +% erl -compile ch2 +% erl -noshell -s ch2 main -s init stop +% + +-module (ch2). +-export ([main/0]). + +main () -> + io:fwrite ("1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499\n"). diff --git a/challenge-150/abigail/forth/ch-2.fs b/challenge-150/abigail/forth/ch-2.fs new file mode 100644 index 0000000000..4c87626777 --- /dev/null +++ b/challenge-150/abigail/forth/ch-2.fs @@ -0,0 +1,5 @@ +\ +\ See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +\ + +.( 1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499) diff --git a/challenge-150/abigail/fortran/ch-2.f90 b/challenge-150/abigail/fortran/ch-2.f90 new file mode 100644 index 0000000000..8062f3007b --- /dev/null +++ b/challenge-150/abigail/fortran/ch-2.f90 @@ -0,0 +1,32 @@ +! +! See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +! + +! +! Run as: gfortran -o ch-2.o ch-2.f90; ./ch-2.o +! + +program ch2 + implicit none + write (*, *) "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31" + write (*, *) "33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61" + write (*, *) "62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89" + write (*, *) "91 93 94 95 97 101 102 103 105 106 107 109 110 111 113" + write (*, *) "114 115 118 119 122 123 127 129 130 131 133 134 137 138" + write (*, *) "139 141 142 143 145 146 149 151 154 155 157 158 159 161" + write (*, *) "163 165 166 167 170 173 174 177 178 179 181 182 183 185" + write (*, *) "186 187 190 191 193 194 195 197 199 201 202 203 205 206" + write (*, *) "209 210 211 213 214 215 217 218 219 221 222 223 226 227" + write (*, *) "229 230 231 233 235 237 238 239 241 246 247 249 251 253" + write (*, *) "254 255 257 258 259 262 263 265 266 267 269 271 273 274" + write (*, *) "277 278 281 282 283 285 286 287 290 291 293 295 298 299" + write (*, *) "301 302 303 305 307 309 310 311 313 314 317 318 319 321" + write (*, *) "322 323 326 327 329 330 331 334 335 337 339 341 345 346" + write (*, *) "347 349 353 354 355 357 358 359 362 365 366 367 370 371" + write (*, *) "373 374 377 379 381 382 383 385 386 389 390 391 393 394" + write (*, *) "395 397 398 399 401 402 403 406 407 409 410 411 413 415" + write (*, *) "417 418 419 421 422 426 427 429 430 431 433 434 435 437" + write (*, *) "438 439 442 443 445 446 447 449 451 453 454 455 457 458" + write (*, *) "461 462 463 465 466 467 469 470 471 473 474 478 479 481" + write (*, *) "482 483 485 487 489 491 493 494 497 498 499" +end diff --git a/challenge-150/abigail/go/ch-1.go b/challenge-150/abigail/go/ch-1.go new file mode 100644 index 0000000000..d29f17187d --- /dev/null +++ b/challenge-150/abigail/go/ch-1.go @@ -0,0 +1,35 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: go run ch-1.go < input-file +// + +import ( + "fmt" + "bufio" + "os" + "strings" +) + +func main () { + var reader = bufio . NewReader (os. Stdin) + LENGTH := 51 + for { + var text, err = reader . ReadString ('\n') + if (err != nil) { + break + } + fibs := strings . Split (strings . Trim (text, "\n"), " ") + fib_prev := fibs [0] + fib_last := fibs [1] + + for len (fib_last) < LENGTH { + fib_prev, fib_last = fib_last, fib_prev + fib_last + } + fmt . Printf ("%c\n", fib_last [LENGTH - 1]) + } +} diff --git a/challenge-150/abigail/go/ch-2.go b/challenge-150/abigail/go/ch-2.go new file mode 100644 index 0000000000..5367957bed --- /dev/null +++ b/challenge-150/abigail/go/ch-2.go @@ -0,0 +1,30 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: go run ch-2.go +// + +import ( + "fmt" +) + +func main () { + primes := [8] int {2, 3, 5, 7, 11, 13, 17, 19} + for n := 1; n <= 500; n ++ { + s := false + for _, p := range primes { + if (n % (p * p) == 0) { + s = true + break + } + } + if !s { + fmt . Printf ("%d ", n) + } + } + fmt . Printf ("\n") +} diff --git a/challenge-150/abigail/java/ch-1.java b/challenge-150/abigail/java/ch-1.java new file mode 100644 index 0000000000..a8d8e34bd8 --- /dev/null +++ b/challenge-150/abigail/java/ch-1.java @@ -0,0 +1,27 @@ +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 < input-file +// + +import java.util.*; + +public class ch1 { + public static void main (String [] args) { + Scanner scanner = new Scanner (System . in); + while (scanner . hasNextLine ()) { + String line = scanner . nextLine (); + String [] fibs = line . trim () . split (" "); + String fib_prev = fibs [0]; + String fib_last = fibs [1]; + while (fib_last . length () < 51) { + String fib_tmp = fib_last; + fib_last = fib_prev + fib_last; + fib_prev = fib_tmp; + } + System . out . println (fib_last . substring (50, 51)); + } + } +} diff --git a/challenge-150/abigail/java/ch-2.java b/challenge-150/abigail/java/ch-2.java new file mode 100644 index 0000000000..2f24445028 --- /dev/null +++ b/challenge-150/abigail/java/ch-2.java @@ -0,0 +1,28 @@ +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 +// + +import java.util.*; + +public class ch2 { + public static void main (String [] args) { + int [] primes = {2, 3, 5, 7, 11, 13, 17, 19}; + for (int n = 1; n <= 500; n ++) { + boolean has_square = false; + for (int p: primes) { + if (n % (p * p) == 0) { + has_square = true; + break; + } + } + if (!has_square) { + System . out . printf ("%d ", n); + } + } + System . out . printf ("\n"); + } +} diff --git a/challenge-150/abigail/lua/ch-1.lua b/challenge-150/abigail/lua/ch-1.lua new file mode 100644 index 0000000000..ddaa1237c5 --- /dev/null +++ b/challenge-150/abigail/lua/ch-1.lua @@ -0,0 +1,19 @@ +#!/opt/local/bin/lua + +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +-- + +-- +-- Run as: lua ch-1.lua < input-file +-- + +local LENGTH = 51 + +for line in io . lines () do + local fib_prev, fib_last = line : match ("(%S+) (%S+)") + while fib_last : len () < LENGTH do + fib_prev, fib_last = fib_last, fib_prev .. fib_last + end + print (fib_last : sub (LENGTH, LENGTH)) +end diff --git a/challenge-150/abigail/lua/ch-2.lua b/challenge-150/abigail/lua/ch-2.lua new file mode 100644 index 0000000000..f3e4862279 --- /dev/null +++ b/challenge-150/abigail/lua/ch-2.lua @@ -0,0 +1,27 @@ +#!/opt/local/bin/lua + +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +-- + +-- +-- Run as: lua ch-2.lua +-- + +local primes = {2, 3, 5, 7, 11, 13, 17, 19} +local max = 500 + +for n = 1, max do + local has_square = 0 + local p + for _, p in ipairs (primes) do + if n % (p * p) == 0 then + has_square = 1 + end + end + if has_square == 0 then + io . write (n) + io . write (" ") + end +end +io . write ("\n") diff --git a/challenge-150/abigail/m4/ch-2.m4 b/challenge-150/abigail/m4/ch-2.m4 new file mode 100644 index 0000000000..e91d0c349c --- /dev/null +++ b/challenge-150/abigail/m4/ch-2.m4 @@ -0,0 +1 @@ +1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499 diff --git a/challenge-150/abigail/mmix/ch-2.mms b/challenge-150/abigail/mmix/ch-2.mms new file mode 100644 index 0000000000..cac34e57ff --- /dev/null +++ b/challenge-150/abigail/mmix/ch-2.mms @@ -0,0 +1,44 @@ +% +% See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +% + +% +% Run as: mmixal -o ch-2.mmo ch-2.mms; mmix -q ch-2.mmo +% + LOC Data_Segment + GREG @ +Text BYTE "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23" + BYTE " 26 29 30 31 33 34 35 37 38 39 41 42 43 46" + BYTE " 47 51 53 55 57 58 59 61 62 65 66 67 69 70" + BYTE " 71 73 74 77 78 79 82 83 85 86 87 89 91 93" + BYTE " 94 95 97 101 102 103 105 106 107 109 110" + BYTE " 111 113 114 115 118 119 122 123 127 129" + BYTE " 130 131 133 134 137 138 139 141 142 143" + BYTE " 145 146 149 151 154 155 157 158 159 161" + BYTE " 163 165 166 167 170 173 174 177 178 179" + BYTE " 181 182 183 185 186 187 190 191 193 194" + BYTE " 195 197 199 201 202 203 205 206 209 210" + BYTE " 211 213 214 215 217 218 219 221 222 223" + BYTE " 226 227 229 230 231 233 235 237 238 239" + BYTE " 241 246 247 249 251 253 254 255 257 258" + BYTE " 259 262 263 265 266 267 269 271 273 274" + BYTE " 277 278 281 282 283 285 286 287 290 291" + BYTE " 293 295 298 299 301 302 303 305 307 309" + BYTE " 310 311 313 314 317 318 319 321 322 323" + BYTE " 326 327 329 330 331 334 335 337 339 341" + BYTE " 345 346 347 349 353 354 355 357 358 359" + BYTE " 362 365 366 367 370 371 373 374 377 379" + BYTE " 381 382 383 385 386 389 390 391 393 394" + BYTE " 395 397 398 399 401 402 403 406 407 409" + BYTE " 410 411 413 415 417 418 419 421 422 426" + BYTE " 427 429 430 431 433 434 435 437 438 439" + BYTE " 442 443 445 446 447 449 451 453 454 455" + BYTE " 457 458 461 462 463 465 466 467 469 470" + BYTE " 471 473 474 478 479 481 482 483 485 487" + BYTE " 489 491 493 494 497 498 499",10,0 + + LOC #100 + +Main LDA $255,Text + TRAP 0,Fputs,StdOut + TRAP 0,Halt,0 diff --git a/challenge-150/abigail/node/ch-1.js b/challenge-150/abigail/node/ch-1.js new file mode 100644 index 0000000000..4a716a5c6a --- /dev/null +++ b/challenge-150/abigail/node/ch-1.js @@ -0,0 +1,21 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: node ch-1.js < input-file +// + + require ('readline') +. createInterface ({input: process . stdin}) +. on ('line', line => { + let [fib_prev, fib_last] = line . trim () . split (" ") + while (fib_last . length < 51) { + let fib_tmp = fib_last + fib_last = fib_prev + fib_last + fib_prev = fib_tmp + } + console . log (fib_last [50]) +}) diff --git a/challenge-150/abigail/node/ch-2.js b/challenge-150/abigail/node/ch-2.js new file mode 100644 index 0000000000..1b9e5aac34 --- /dev/null +++ b/challenge-150/abigail/node/ch-2.js @@ -0,0 +1,23 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +// + +// +// Run as: node ch-2.js +// + +let primes = [2, 3, 5, 7, 11, 13, 17, 19]; +for (let n = 1; n <= 500; n ++) { + let has_square = false + primes . forEach (p => { + if (n % (p * p) == 0) { + has_square = true + } + }) + if (!has_square) { + process . stdout . write (n . toString () + " ") + } +} +process . stdout . write ("\n") diff --git a/challenge-150/abigail/ocaml/ch-2.ml b/challenge-150/abigail/ocaml/ch-2.ml new file mode 100644 index 0000000000..575fc39c8a --- /dev/null +++ b/challenge-150/abigail/ocaml/ch-2.ml @@ -0,0 +1,9 @@ +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 *) +(* *) + +(* *) +(* Run as: ocaml ch-2.ml *) +(* *) + +print_endline "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499"; diff --git a/challenge-150/abigail/pascal/ch-1.p b/challenge-150/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..3a9fab74cc --- /dev/null +++ b/challenge-150/abigail/pascal/ch-1.p @@ -0,0 +1,32 @@ +Program XXX; + +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 *) +(* *) + +(* *) +(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *) +(* *) + +uses + StrUtils, types; + +var + line: string; + fibs: TStringDynArray; + fib_tmp, fib_prev, fib_last: string; + +begin + while not eof do begin + readln (line); + fibs := SplitString (line, ' '); + fib_prev := fibs [0]; + fib_last := fibs [1]; + while length (fib_last) < 51 do begin + fib_tmp := fib_last; + fib_last := concat (fib_prev, fib_last); + fib_prev := fib_tmp; + end; + writeln (fib_last [51]); + end +end. diff --git a/challenge-150/abigail/pascal/ch-2.p b/challenge-150/abigail/pascal/ch-2.p new file mode 100644 index 0000000000..a4187134c7 --- /dev/null +++ b/challenge-150/abigail/pascal/ch-2.p @@ -0,0 +1,29 @@ +Program XXX; + +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 *) +(* *) + +(* *) +(* Run as: fpc -och-2.out ch-2.p; ./ch-2.out *) +(* *) + +var + primes: array [1 .. 8] of integer = (2, 3, 5, 7, 11, 13, 17, 19); + n, p: integer; + has_square: boolean; + +begin + for n := 1 to 500 do begin + has_square := false; + for p := 1 to 8 do begin + if (n mod (primes [p] * primes [p])) = 0 then begin + has_square := true; + end; + end; + if not has_square then begin + write (n, ' '); + end + end; + writeln (''); +end. diff --git a/challenge-150/abigail/perl/ch-1.pl b/challenge-150/abigail/perl/ch-1.pl new file mode 100644 index 0000000000..c555e07821 --- /dev/null +++ b/challenge-150/abigail/perl/ch-1.pl @@ -0,0 +1,34 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: perl ch-1.pl < input-file +# + +# +# Not sure what the restriction that both numbers are of the same +# length is going to buy us anything. We don't buy anything from +# the fact the input consists of digits only either. +# + +my $LENGTH = 51; + +while (<>) { + my ($fib_prev, $fib_last) = /[0-9]+/g; + while (length ($fib_last) < $LENGTH) { + ($fib_prev, $fib_last) = ($fib_last, $fib_prev . $fib_last); + } + say substr $fib_last, $LENGTH - 1, 1; +} diff --git a/challenge-150/abigail/perl/ch-2.pl b/challenge-150/abigail/perl/ch-2.pl new file mode 100644 index 0000000000..ffcf993b91 --- /dev/null +++ b/challenge-150/abigail/perl/ch-2.pl @@ -0,0 +1,47 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: perl ch-2.pl +# + +# +# This is sequence A005117 in the OEIS. +# +# I guess we could factorize each number and check for duplicate factors, +# and that might be the way to go if we wanted to determine whether a +# a really large number is square free. +# +# Or we could use a sieve -- again, useful when dealing with (a range of) +# large numbers. +# +# But we only need to determine square free numbers up to 500. Which +# means we only need to test whether such numbers aren't divisible by +# p^2, for prime p, such that p^2 < 500. +# +# 361 = 19^2 < 500 < 23^2 = 529 +# +# So, we only need to check whether they aren't divisible by 8 numbers. +# (We could stop checking as soon as we find a square which divides the +# number, but then we would not have a one-liner...) +# +# +# Of course, since this is just yet another "get the first N values +# from a sequence listed at the OEIS", we could just print out the +# expected numbers, and turn this into a glorified Hello, World program. +# + +$, = " "; +say grep {$a = $_; 8 == grep {$a % $_ ** 2} 2, 3, 5, 7, 11, 13, 17, 19} 1 .. 500 diff --git a/challenge-150/abigail/php/ch-2.php b/challenge-150/abigail/php/ch-2.php new file mode 100644 index 0000000000..5d4c31d379 --- /dev/null +++ b/challenge-150/abigail/php/ch-2.php @@ -0,0 +1,11 @@ + diff --git a/challenge-150/abigail/postscript/ch-2.ps b/challenge-150/abigail/postscript/ch-2.ps new file mode 100644 index 0000000000..3473719aaf --- /dev/null +++ b/challenge-150/abigail/postscript/ch-2.ps @@ -0,0 +1,10 @@ +%!PS +% +% See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +% + +% +% Run as: ps2ascii ch-2.ps +% + +(1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499) = diff --git a/challenge-150/abigail/python/ch-1.py b/challenge-150/abigail/python/ch-1.py new file mode 100644 index 0000000000..7d56fa686d --- /dev/null +++ b/challenge-150/abigail/python/ch-1.py @@ -0,0 +1,17 @@ +#!/usr/local/bin/python3 + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: python ch-1.py < input-file +# + +import fileinput + +for line in fileinput . input (): + fib_prev, fib_last = line . strip () . split (" ") + while len (fib_last) < 51: + fib_prev, fib_last = fib_last, fib_prev + fib_last + print (fib_last [50:51]) diff --git a/challenge-150/abigail/python/ch-2.py b/challenge-150/abigail/python/ch-2.py new file mode 100644 index 0000000000..c1fd1e5447 --- /dev/null +++ b/challenge-150/abigail/python/ch-2.py @@ -0,0 +1,22 @@ +#!/usr/local/bin/python3 + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: python ch-2.py +# + +import sys + +primes = [2, 3, 5, 7, 11, 13, 17, 19] + +for n in range (1, 501): + has_square = False + for p in primes: + if n % (p * p) == 0: + has_square = True + if not has_square: + sys . stdout . write (str (n) + " ") +sys . stdout . write ("\n") diff --git a/challenge-150/abigail/r/ch-1.r b/challenge-150/abigail/r/ch-1.r new file mode 100644 index 0000000000..eb9e5eb43c --- /dev/null +++ b/challenge-150/abigail/r/ch-1.r @@ -0,0 +1,27 @@ +#!/usr/local/bin/Rscript + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: Rscript ch-1.r < input-file +# + +stdin <- file ('stdin', 'r') +repeat { + line <- readLines (stdin, n = 1) + if (length (line) == 0) { + break + } + fibs <- strsplit (line, " ") + fib_prev <- fibs [[1]] [[1]] + fib_last <- fibs [[1]] [[2]] + c <- 0 + while (nchar (fib_last) < 51) { + fib_tmp <- fib_last + fib_last <- paste0 (fib_prev, fib_last) + fib_prev <- fib_tmp + } + cat (substr (fib_last, 51, 51), "\n") +} diff --git a/challenge-150/abigail/r/ch-2.r b/challenge-150/abigail/r/ch-2.r new file mode 100644 index 0000000000..ce2cf4cc34 --- /dev/null +++ b/challenge-150/abigail/r/ch-2.r @@ -0,0 +1,24 @@ +#!/usr/local/bin/Rscript + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: Rscript ch-2.r +# + +primes <- c(2, 3, 5, 7, 11, 13, 17, 19) + +for (n in 1 : 500) { + has_square <- FALSE + for (p in primes) { + if (n %% (p * p) == 0) { + has_square <- TRUE + } + } + if (!has_square) { + cat (n, "") + } +} +cat ("\n") diff --git a/challenge-150/abigail/rexx/ch-2.rexx b/challenge-150/abigail/rexx/ch-2.rexx new file mode 100644 index 0000000000..12a74cb1a6 --- /dev/null +++ b/challenge-150/abigail/rexx/ch-2.rexx @@ -0,0 +1,9 @@ +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 + */ + +/* + * Run as: rexx ch-2.rexx + */ + +say "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499" diff --git a/challenge-150/abigail/ruby/ch-1.rb b/challenge-150/abigail/ruby/ch-1.rb new file mode 100644 index 0000000000..137545d9f8 --- /dev/null +++ b/challenge-150/abigail/ruby/ch-1.rb @@ -0,0 +1,17 @@ +#!/usr/bin/ruby + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: ruby ch-1.rb < input-file +# + +ARGF . each_line do |line| + fib_prev, fib_last = line . strip() . split(" ") + while fib_last . length < 51 do + fib_prev, fib_last = fib_last, fib_prev + fib_last + end + puts (fib_last [50]) +end diff --git a/challenge-150/abigail/ruby/ch-2.rb b/challenge-150/abigail/ruby/ch-2.rb new file mode 100644 index 0000000000..5ecfdb6f3f --- /dev/null +++ b/challenge-150/abigail/ruby/ch-2.rb @@ -0,0 +1,24 @@ +#!/usr/bin/ruby + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: ruby ch-2.rb +# + +primes = [2, 3, 5, 7, 11, 13, 17, 19] +for n in 1 .. 500 do + has_square = false + for p in 0 .. 7 do + if n % (primes[p] * primes[p]) == 0 then + has_square = true + end + end + if !has_square then + print (n) + print (" ") + end +end +print ("\n") diff --git a/challenge-150/abigail/scheme/ch-1.scm b/challenge-150/abigail/scheme/ch-1.scm new file mode 100644 index 0000000000..41ad890078 --- /dev/null +++ b/challenge-150/abigail/scheme/ch-1.scm @@ -0,0 +1,33 @@ +#!/usr/local/bin/guile +!# + +;;; +;;; See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-1.scm < input-file +;;; + + +(use-modules (ice-9 rdelim)) +(use-modules (ice-9 format)) + +(define (fib fib_prev fib_last) + (if (>= (string-length fib_last) 51) + (format #t "~c\n" (string-ref fib_last 50)) + (fib fib_last (string-concatenate (list fib_prev fib_last))))) + + +(define (main) + (define line (read-line)) + (if (not (eof-object? line)) + (begin + (fib (list-ref (string-split line #\ ) 0) + (list-ref (string-split line #\ ) 1)) + (main) + ) + ) +) + +(main) diff --git a/challenge-150/abigail/scheme/ch-2.scm b/challenge-150/abigail/scheme/ch-2.scm new file mode 100644 index 0000000000..aa37ef89b3 --- /dev/null +++ b/challenge-150/abigail/scheme/ch-2.scm @@ -0,0 +1,31 @@ +#!/usr/local/bin/guile +!# + +;;; +;;; See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +;;; + +;;; +;;; Run as: guile --no-auto-compile ch-2.scm +;;; + + +(use-modules (ice-9 rdelim)) +(use-modules (ice-9 format)) + +(define primes (list 2 3 5 7 11 13 17 19)) + +(define (square-free n primes) + (cond ((null? primes) #t) + ((= (modulo n (* (car primes) (car primes))) 0) #f) + (else (square-free n (cdr primes))))) + +(define (all-square-free from to) + (if (<= from to) + (begin + (if (square-free from primes) + (format #t "~d " from)) + (all-square-free (+ from 1) to)))) + +(all-square-free 1 500) +(newline) diff --git a/challenge-150/abigail/sed/ch-2.sed b/challenge-150/abigail/sed/ch-2.sed new file mode 100644 index 0000000000..9427fe8bd6 --- /dev/null +++ b/challenge-150/abigail/sed/ch-2.sed @@ -0,0 +1,12 @@ +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: sed -f ch-2.sed +# +# For each line in the input file, we write the first three +# self-describing numbers. +# + +s/.*/1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499/ diff --git a/challenge-150/abigail/sql/ch-2.sql b/challenge-150/abigail/sql/ch-2.sql new file mode 100644 index 0000000000..bc8c6fb2e5 --- /dev/null +++ b/challenge-150/abigail/sql/ch-2.sql @@ -0,0 +1,9 @@ +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +-- + +-- +-- Run as: sqlite3 < ch-2.sql +-- + +SELECT "1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499"; diff --git a/challenge-150/abigail/t/ctest.ini b/challenge-150/abigail/t/ctest.ini new file mode 100644 index 0000000000..a83e0b3d93 --- /dev/null +++ b/challenge-150/abigail/t/ctest.ini @@ -0,0 +1,20 @@ +# +# Configuration file for running tests, using ctest. +# See https://github.com/Abigail/Misc/blob/master/ctest +# + +[names] +1-1 = Given Example +2-1 = Fixed output + +[1-1/bc] +add_to_input = 0 +env = BC_LINE_LENGTH=1000 + +[2-1/fortran] +join_output = 1 + +[2-1/bc] +env = BC_LINE_LENGTH=1000 + + diff --git a/challenge-150/abigail/t/input-1-1 b/challenge-150/abigail/t/input-1-1 new file mode 100644 index 0000000000..fbba5e53e6 --- /dev/null +++ b/challenge-150/abigail/t/input-1-1 @@ -0,0 +1 @@ +1234 5678 diff --git a/challenge-150/abigail/t/input-2-1 b/challenge-150/abigail/t/input-2-1 new file mode 100644 index 0000000000..8d1c8b69c3 --- /dev/null +++ b/challenge-150/abigail/t/input-2-1 @@ -0,0 +1 @@ + diff --git a/challenge-150/abigail/t/output-1-1.exp b/challenge-150/abigail/t/output-1-1.exp new file mode 100644 index 0000000000..7f8f011eb7 --- /dev/null +++ b/challenge-150/abigail/t/output-1-1.exp @@ -0,0 +1 @@ +7 diff --git a/challenge-150/abigail/t/output-2-1.exp b/challenge-150/abigail/t/output-2-1.exp new file mode 100644 index 0000000000..e91d0c349c --- /dev/null +++ b/challenge-150/abigail/t/output-2-1.exp @@ -0,0 +1 @@ +1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 131 133 134 137 138 139 141 142 143 145 146 149 151 154 155 157 158 159 161 163 165 166 167 170 173 174 177 178 179 181 182 183 185 186 187 190 191 193 194 195 197 199 201 202 203 205 206 209 210 211 213 214 215 217 218 219 221 222 223 226 227 229 230 231 233 235 237 238 239 241 246 247 249 251 253 254 255 257 258 259 262 263 265 266 267 269 271 273 274 277 278 281 282 283 285 286 287 290 291 293 295 298 299 301 302 303 305 307 309 310 311 313 314 317 318 319 321 322 323 326 327 329 330 331 334 335 337 339 341 345 346 347 349 353 354 355 357 358 359 362 365 366 367 370 371 373 374 377 379 381 382 383 385 386 389 390 391 393 394 395 397 398 399 401 402 403 406 407 409 410 411 413 415 417 418 419 421 422 426 427 429 430 431 433 434 435 437 438 439 442 443 445 446 447 449 451 453 454 455 457 458 461 462 463 465 466 467 469 470 471 473 474 478 479 481 482 483 485 487 489 491 493 494 497 498 499 diff --git a/challenge-150/abigail/tcl/ch-1.tcl b/challenge-150/abigail/tcl/ch-1.tcl new file mode 100644 index 0000000000..139521c54e --- /dev/null +++ b/challenge-150/abigail/tcl/ch-1.tcl @@ -0,0 +1,17 @@ +#!/usr/local/opt/tcl-tk/bin/tclsh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: tclsh ch-1.tcl < input-file +# + +while {[gets stdin line] >= 0} { + lassign [split $line " "] fib_prev fib_last + while {[string length $fib_last] < 51} { + lassign "$fib_last $fib_prev$fib_last" fib_prev fib_last + } + puts [string index $fib_last 50] +} diff --git a/challenge-150/abigail/tcl/ch-2.tcl b/challenge-150/abigail/tcl/ch-2.tcl new file mode 100644 index 0000000000..404637f772 --- /dev/null +++ b/challenge-150/abigail/tcl/ch-2.tcl @@ -0,0 +1,25 @@ +#!/usr/local/opt/tcl-tk/bin/tclsh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-150 +# + +# +# Run as: tclsh ch-2.tcl +# + +set primes [list 2 3 5 7 11 13 17 19] + +for {set n 1} {$n <= 500} {incr n} { + set has_square 0 + foreach p $primes { + if {$n % ($p * $p) == 0} { + set has_square 1 + } + } + if {$has_square == 0} { + puts -nonewline "${n} " + } +} + +puts "" -- cgit