| 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  | 
| 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   | 
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
Make the 'worrrd' logo
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   | 
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   | 
... | 
 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")