HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

A Sudoku Solver in APL

Dyalog4 HN recommenders · recommended in 4 months, 2015-2022
YouTube
47K views · 14 years ago · demo · evergreen

A Dyalog demonstration of developing a Sudoku solver in APL, using an algorithm by Arthur Whitney with performance work by John Scholes. The narration steps through the array-oriented solution.

Strongly recommended as a beautiful demonstration that APL can be read and reasoned about step by step.

Functional programmingAlgorithms & data structures#apl#sudoku#dyalog#johnscholes#functionalprogramming

6 comments from Hacker News

@lizardactivist2022 · in “Dyalog APL 18.2”

I've always liked this video, where one of the Dyalog developers effortlessly writes a Sudoku solver in APL: ▶ this video

Strongly recommendsView on HN
@moonchild2020 · in “J Notation as a Tool of Thought”

> My point was that general programming usually looks more like writing the sorting algorithm than simply calling it. Thus, I would be more interested in seeing real examples of how the properties of J allow you to write algorithms more concisely or otherwise better. Ah - I see. Here[1] is quicksort in j. John scholes's videos are excellent and very illustrative, though they deal with apl rather than j; conway's game of life[2] and sudoku[3]. > The article showed how J solves some mathematical problems with built in functions or their built-in modifiers. But in general programming, you won't find a function that does exactly what you wanted, maybe with a little adverb. You'll usually have to write that function yourself, to describe how it works in terms of some of those pre-existing functions. Right. This is true, but you generally stay much closer to the builtins in j than you do in other language. > Note that your second example could be expressed as something like > x.OrderBy(y => y[1]) > In C#, assuming x is int[N][M]. I understand that J's version can work with many other shapes of X, but that is hard to appreciate without seeing example of how that comes in handy when writing some other (hopefully well known) algorithm. Right; you mentioned sort predicates, so I was giving an example of a way in which you could sort according to another relation. My point is: being able to change the layout of your data so easily can obviate sort predicates. (Though I do think a sort a

Strongly recommendsView on HN
@kick2020 · in “Stages of denial in encountering K”

I'm very much a believer in concise notation (more than most people I've worked with), but the advantages of having a name that can be unambiguously spoken are large enough to outweigh a small constant factor. I don't believe this holds up to scrutiny. APL as a language was made to be spoken, and it seems to have succeeded in that. Alan Perlis briefly touched on that in a great paper,[1] and just about everyone who's worked with the language and its derivatives agrees that your statement isn't true. The idea that APL and its derivatives can't be "read and talked about" is frankly ignoring reality by any stretch of the imagination. For example, here's [2] [3] [4] some videos disproving your statement, the first two being APL, the last being k itself. For extra bonus points, see Aaron Hsu's talks [5]; pick any of them, they're all pretty good, and most have a segment in them explaining how that viewpoint is wrong. [1] link [2] link [3] ▶ this video [4] link [5] link

CitesView on HN
@paliilap2019 · in “J can look like APL or English”

That 1975 APL demonstration is lovely. Much has been preserved in Dyalog and GNU APL - it's very interesting to see how timeless the core APL functions are. I'm very fond of a number of videos by the late John Scholes narrating APL solutions step by step, including the well-known demonstration of Conway's Game of Life in APL (0). His videos on depth-first search (1) and solving sudoku (2) are also brilliant. (0) link (1) link (2) ▶ this video

Strongly recommendsView on HN
@geocar2019 · in “Non-English-based programming languages”

APL is great. If you haven't seen them, the late John Scholes did a number of absolutely beautiful demonstrations programming in APL[1], [2], [3]. [1]: link [2]: ▶ this video [3]: link

Strongly recommendsView on HN
@wickawic2015 · in “Solving Every Sudoku Puzzle (2006)”

I've noticed that solving a sudoku is something of a rosetta stone for how people program. Norvig's solution is very straightforward in hindsight, but I think that code was either the result of many iterations or of a career of making progressively more readable code. Here are some other sudoku solvers that give more insight into the coder than the problem: Sudoku in APL: ▶ this video Test driven sudoku: link

CitesView on HN
Depth-first search in APL11:32

Depth-first search in APL

Dyalog
11K views • 12 years ago
Conway's Game Of Life in APL7:48

Conway's Game Of Life in APL

Dyalog
236K views • 17 years ago
Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '1759:03

Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17

Dyalog User Meetings
7K views • 9 years ago
High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '1830:37

High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '18

Dyalog User Meetings
6K views • 7 years ago
"Shen: A Sufficiently Advanced Lisp" by Aditya Siram40:20

"Shen: A Sufficiently Advanced Lisp" by Aditya Siram

Strange Loop Conference
26K views • 12 years ago
Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScript1:02:15

Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScript

Fullstack Academy
227K views • 9 years ago
The Simple Essence of Automatic Differentiation - Conal Elliott1:30:45

The Simple Essence of Automatic Differentiation - Conal Elliott

Microsoft Research
17K views • 8 years ago
Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey1:04:16

Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey

Churchill College, University of Cambridge
170K views • 9 years ago
Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich53:22

Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich

Confreaks
65K views • 14 years ago
The Functional Programmer's Toolkit - Scott Wlaschin1:05:51

The Functional Programmer's Toolkit - Scott Wlaschin

NDC Conferences
79K views • 7 years ago
Parsing with Derivatives1:13:10

Parsing with Derivatives

Stanford
13K views • 15 years ago
Saša Jurić - Parsing from first principles - WebCamp Zagreb 20191:10:16

Saša Jurić - Parsing from first principles - WebCamp Zagreb 2019

WebCamp Zagreb
6K views • 7 years ago
Lecture 1A: Overview and Introduction to Lisp1:12:56

Lecture 1A: Overview and Introduction to Lisp

MIT OpenCourseWare
420K views • 7 years ago
Lenses, Folds, and Traversals1:54:46

Lenses, Folds, and Traversals

Edward Kmett
54K views • 13 years ago
Superpositions, Sudoku, the Wave Function Collapse algorithm.14:28

Superpositions, Sudoku, the Wave Function Collapse algorithm.

Martin Donald
764K views • 6 years ago
William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]1:31:06

William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]

PapersWeLove
367K views • 9 years ago
Design Patterns vs  Anti pattern in APL by Aaron W Hsu at FnConf1754:10

Design Patterns vs Anti pattern in APL by Aaron W Hsu at FnConf17

ConfEngine
8K views • 8 years ago
Glenn Vanderburg - Cló: The Algorithms of TeX in Clojure42:25

Glenn Vanderburg - Cló: The Algorithms of TeX in Clojure

ClojureTV
9K views • 11 years ago
Ruby Manor 3 - Programming with Nothing by Tom Stuart40:50

Ruby Manor 3 - Programming with Nothing by Tom Stuart

Confreaks
13K views • 14 years ago
Pure Functional Programming in Excel • Felienne Hermans • GOTO 201643:16

Pure Functional Programming in Excel • Felienne Hermans • GOTO 2016

GOTO Conferences
26K views • 10 years ago