crosswords puzzles - queensjs

29
Crossword Puzzles in Burmese and JavaScript Nick Doiron — @mapmeld

Upload: nick-mapmeld

Post on 22-Jan-2018

284 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Crosswords Puzzles - QueensJS

Crossword Puzzles

in Burmese and JavaScript

!

Nick Doiron — @mapmeld

Page 2: Crosswords Puzzles - QueensJS

About Me

Page 3: Crosswords Puzzles - QueensJS

This presentation

• Generating crossword puzzles

• Making it work with Unicode

• … is this a good idea?

Page 4: Crosswords Puzzles - QueensJS

Revisiting Crosswords

Page 5: Crosswords Puzzles - QueensJS

Data modeling

• Crossword puzzle is a 2D array{ letter: null || String, number: null || String } // accept Unicode numerals

Page 6: Crosswords Puzzles - QueensJS

Rendering• <canvas>var canvas = $(‘canvas’).get(0); ctx = canvas.getContext(‘2d’);

• When you set a letter, print embedded white square, then maybe a number

Page 7: Crosswords Puzzles - QueensJS

Placing words?

Page 8: Crosswords Puzzles - QueensJS

Random?

Page 9: Crosswords Puzzles - QueensJS

Seeking out matches

Page 10: Crosswords Puzzles - QueensJS

Seeking word matches

• Longest words first

• Shuffle previous words to spread out connections

• No prefixes, suffixes, or going parallel to previous words

Page 11: Crosswords Puzzles - QueensJS
Page 12: Crosswords Puzzles - QueensJS

NodeJS• npm install canvas!

• (need dependencies / buildpacks on cloud)

Page 13: Crosswords Puzzles - QueensJS

NodeJS• Making a Crossword object!

• Pass <canvas> element (Node or client) into Crossword constructor!

• Moving client-side events to function calls!

• CLI!

• npm install crossword -g

Page 14: Crosswords Puzzles - QueensJS
Page 15: Crosswords Puzzles - QueensJS

Not emoji

yes this talk is secretly about Unicode the not-fun parts

Page 16: Crosswords Puzzles - QueensJS

How I got into this

Page 17: Crosswords Puzzles - QueensJS

Current State of Burmese• I’m on the Unicode Myanmar workgroup

• iOS 10 supports Burmese!

• The JS Intl API

• Traditional calendar unsupported :-(

• Alphabet Team

Page 18: Crosswords Puzzles - QueensJS
Page 19: Crosswords Puzzles - QueensJS

Intimidating Linguistics Part

Page 20: Crosswords Puzzles - QueensJS

How Burmese works

မန #မန$မ% မ ြ န ် မ ာ

Page 21: Crosswords Puzzles - QueensJS

မဂ*လ%ပ-

င ် ္ ဂ ????

Page 22: Crosswords Puzzles - QueensJS

Rise of theGrapheme Cluster

Page 23: Crosswords Puzzles - QueensJS

RegEx to end all RegExes?

• No, use npm install regenerate

Page 24: Crosswords Puzzles - QueensJS

Numerals

• npm install myanmar-numbers block.number = shared_start || i18n_function( clue_number++ )

Page 25: Crosswords Puzzles - QueensJS

Is it a good idea?

hypothetical case-sensitive crossword

Page 26: Crosswords Puzzles - QueensJS

Is it a good idea? 54 variations

Page 27: Crosswords Puzzles - QueensJS

Is it a good idea?

Page 28: Crosswords Puzzles - QueensJS
Page 29: Crosswords Puzzles - QueensJS

Thank You !!Nick Doiron — @mapmeld