The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Type: Package
Title: Generate Wordsearch and Crossword Puzzles
Version: 0.1.0
Description: Generate wordsearch and crossword puzzles using custom lists of words (and clues). Make them easy or hard, and print them to solve offline with paper and pencil!
License: MIT + file LICENSE
URL: https://www.stochastic-squirrel.com/worrrd/, https://github.com/anthonypileggi/worrrd
BugReports: https://github.com/anthonypileggi/worrrd/issues
Encoding: UTF-8
RoxygenNote: 7.1.2
Imports: ggplot2, dplyr, tibble, magrittr, stringr, purrr, yaml, glue, ggtext, ggfittext, cowplot
Suggests: magick, emoji, rvest, english, knitr, rmarkdown
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2022-10-22 02:10:07 UTC; apile
Author: Anthony Pileggi [aut, cre, cph], Shannon Pileggi ORCID iD [aut]
Maintainer: Anthony Pileggi <apileggi20@gmail.com>
Repository: CRAN
Date/Publication: 2022-10-25 17:30:02 UTC

Add a word to a word matrix

Description

Add a word to a word matrix

Usage

add_word(x, word = "finding", must_intersect = FALSE, shape_matrix = NULL)

Arguments

x

word matrix

word

the word to add (character/scalar)

must_intersect

force the added word to intersect with >1 word (logical/scalar)

shape_matrix

a binary matrix generated from a call to image_matrix

Value

word matrix with word added (if possible)


Assign an object to the 'crossword' class

Description

Assign an object to the 'crossword' class

Usage

as_crossword(x)

Arguments

x

an object containing crossword data

Value

crossword object: a matrix reprepresentation of the crossword, with attributes: positions: tibble representation of crossword clues: tibble representation of clue start (i.e., clue number locations)


Assign an object to the 'wordsearch' class

Description

Assign an object to the 'wordsearch' class

Usage

as_wordsearch(x)

Arguments

x

an object containing wordsearch data

Value

wordsearch object: a list with the following elements:

search: a matrix representation of the wordsearch with 'positions' attribute a tibble representation of the solution words: (character/vector) clues: (character/vector) solution: a matrix representation of the wordsearch solution with 'positions' attribute a tibble representation of the solution image: image for shaping wordsearch (NULL if not provided) shape_matrix: binary matrix representation of shape (NULL if no image)


Create a puzzle book

Description

Create a puzzle book

Usage

book(
  input_file = system.file("book.yml", package = "worrrd"),
  output_file = "book.pdf",
  solutions = TRUE
)

Arguments

input_file

yaml file containing book details/contents

output_file

full path to output file (with .pdf extension)

solutions

include solutions (logical/scalar)

Value

full path to the created puzzle book

Examples


# Create demo book included with package
book(output_file = "demo.pdf")
unlink("demo.pdf")


Create a crossword puzzle

Description

Create a crossword puzzle

Usage

crossword(words, clues, r = 50, c = 50, method = c("optimal", "random"))

Arguments

words

a vector of words (character/vector)

clues

a vector a clues (character/vector)

r

number of rows (numeric/scalar)

c

number of columns (numeric/scalar)

method

generate puzzle using 'optimal' or 'random' word order, where the optimal order will place words with the most overlap first

Value

crossword object

Examples

# Example 1 ----
words <- c("apple", "pear", "banana")
clues <- c("red fruit", "bartlett", "green then yellow")
x <- crossword(words, clues)
plot(x, solution = TRUE)

# Example 2 ---
dat <-
dplyr::tribble(
  ~word,   ~clue,
  "dog",   "Bark. Bark. Bark.",
  "cat",   "Purrr",
  "horse", "Neighhhhh",
  "frog",  "Ribbit Ribbit",
  "cow",   "Moooooooo",
  "fox",   "Nee Nee Nee (What does the ____ say?)",
  "sheep", "Bleat",
  "snake", "Hissss",
  "duck",  "Quack",
  "bird",  "Chirp"
)
ex2 <- crossword(words = dat$word, clues = dat$clue, r = 40, c = 40)
plot(ex2, solution = TRUE, clues = TRUE)


Convert an image to a 0/1 matrix

Description

Convert an image to a 0/1 matrix

Usage

image_matrix(
  img = "https://upload.wikimedia.org/wikipedia/commons/9/96/Tux_Paint_banana.svg",
  rows = 10,
  columns = 10
)

Arguments

img

full path to image (character/scalar)

rows

number of rows (numeric/scalar)

columns

number of columns (numeric/scalar)


Check if an object is of the 'crossword' class

Description

Check if an object is of the 'crossword' class

Usage

is_crossword(x)

Arguments

x

an R object to check

Value

logical/scalar


Check if an object is of the 'wordsearch' class

Description

Check if an object is of the 'wordsearch' class

Usage

is_wordsearch(x)

Arguments

x

an R object to check

Value

logical/scalar


Description

Make the 'worrrd' logo

Usage

make_logo()

Compute maximum word size, based on the current word matrix

Description

Compute maximum word size, based on the current word matrix

Usage

max_word_size(x, shape_matrix = NULL)

Arguments

x

word_search matrix

shape_matrix

shape matrix (logical) of identical size to 'x'


Plot a crossword puzzle

Description

Plot a crossword puzzle

Usage

## S3 method for class 'crossword'
plot(
  x,
  solution = FALSE,
  clues = FALSE,
  title = "Crossword Puzzle",
  legend_size = 4,
  ...
)

Arguments

x

a crossword object (see crossword)

solution

show solution? (logical/scalar)

clues

show clues? (logical/scalar)

title

puzzle title (character/scalar)

legend_size

letter size of word list; set to NULL to auto-size (numeric/scalar)

...

additional printing args

Value

ggplot2 object


Draw a wordsearch puzzle

Description

Draw a wordsearch puzzle

Usage

## S3 method for class 'wordsearch'
plot(
  x,
  solution = FALSE,
  clues = TRUE,
  title = "",
  puzzle_size = NULL,
  legend_size = NULL,
  ...
)

Arguments

x

wordsearch object (class: wordsearch)

solution

show solution? (logical/scalar)

clues

show clues? (logical/scalar)

title

puzzle title (character/scalar)

puzzle_size

letter size of puzzle; ignore to auto-size (numeric/scalar)

legend_size

letter size of word list; set to NULL to auto-size (numeric/scalar)

...

additional plotting args

Value

ggplot object


Prepare a word(s)

Description

Prepare a word(s)

Usage

prepare_words(x)

Arguments

x

word list (character/vector)


Print a crossword puzzle

Description

Print a crossword puzzle

Usage

## S3 method for class 'crossword'
print(x, ...)

Arguments

x

a crossword object (see crossword)

...

additional printing args

Value

crossword object


Print details for a wordsearch puzzle

Description

Print details for a wordsearch puzzle

Usage

## S3 method for class 'wordsearch'
print(x, ...)

Arguments

x

wordsearch object (class: wordsearch)

...

additional printing args

Value

wordsearch object


Prepare a worrrd object for printing

Description

Prepare a worrrd object for printing

Usage

printable(x, filename = "plot.pdf")

Arguments

x

ggplot object

filename

name of file

Value

filename of pdf puzzle

Examples

words <- c("dog", "cat", "horse", "frog", "cow", "fox")
ex1 <- wordsearch(words, r = 10, c = 10)
my_puzzle <- plot(ex1, solution = FALSE)
printable(my_puzzle, "my_wordsearch.pdf")
unlink("my_wordsearch.pdf")


Get possible intersection points based on the current board and a provided word

Description

Get possible intersection points based on the current board and a provided word

Usage

word_intersections(x, word = "needles")

Arguments

x

word matrix

word

the word to add (character/scalar)

Value

for each direction, a matrix of crossing-point counts


Compute overlap score for a vector of words

Description

Compute overlap score for a vector of words

Usage

word_overlap(words)

Arguments

words

vector of words (character/vector)


Create a wordsearch puzzle

Description

Create a wordsearch puzzle

Usage

wordsearch(
  words = c("finding", "needles", "inside", "haystacks"),
  clues = words,
  r = 10,
  c = 10,
  image = NULL
)

Arguments

words

a vector of hidden words (character/vector)

clues

a vector of word clues (optional; character/vector)

r

number of rows

c

number of columns

image

path to an image that the resulting grid should look like.NULL for no shape

Value

wordsearch object

Examples

# Example 1 ----
words <- c("dog", "cat", "horse", "frog", "cow", "fox")
ex1 <- wordsearch(words, r = 10, c = 10)
plot(ex1, solution = TRUE)

# Example 2 ----
clues <- c("Bark", "Meow", "Neigh", "Ribbit", "Moo", "Nee Nee Nee")
ex2 <- wordsearch(words = words, clues = clues)
plot(ex2, solution = TRUE, title = "Animal Sounds", legend_size = 4)

# Example 3 ----
math <- dplyr::tribble(
  ~problem,  ~solution,
  "2 + 2",   "four",
  "5 + 3",   "eight",
  "9 - 4",   "five",
  "1 + 0",   "one",
  "2 + 1",   "three",
  "5 + 5",   "ten",
  "6 - 6",   "zero"
 )
 ex3 <- wordsearch(words = math$solution, clues = math$problem)
 plot(ex3, solution = TRUE, title = "Math is Fun")

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.