Skip to content

Instantly share code, notes, and snippets.

View trha's full-sized avatar

trha

View GitHub Profile
@trha
trha / perr.ts
Created December 20, 2019 08:57
type Result<T, E> = Generator<E, T, never>;
function Err<T, E>(e: E): Result<T, E> {
return {
[Symbol.iterator](): Result<T, E> {
return this;
},
return(value: T): IteratorResult<E, T> {
throw "never return";
},
use frunk::{
hlist::{HCons, HNil},
labelled::{Field, LabelledGeneric},
};
use frunk_derives::LabelledGeneric;
trait GShow<T> {
fn gshow(self) -> String;
}
adjacent_clockwise(X, Y, S) :- append(_, [X, Y|_], S).
adjacent_clockwise(X, Y, S) :- append([Y|_], [X], S).
adjacent(X, Y, S) :- adjacent_clockwise(X, Y, S) ; adjacent_clockwise(Y, X, S).
riddle(S) :-
S = [
[_, north, _, _, _, _],
[_, east, _, _, _, _],
[_, south_east, _, _, _, _],
[_, south_west, _, _, _, _],
function num_at(n, r, c) { //trả về số tại ô (r, c) của ma trận xoắn ốc nxn
var square = Math.min(r, c, n - r - 1, n - c - 1)
var num = 4 * square * (n - square) //số ngay trước hình vuông này
var top = square
var right = n - square - 1;
var bottom = n - square - 1;