View log_replacement.php
<?php
function find_logs_without_strings($str) {
// this function finds log_<whatever>(, then searches forward until it finds the matching closing bracket.
// it calls itself on the contents of the brackets, so any nested logs are caught
// it doesn't deal with strings, or `log10`. It wouldn't be too hard to add, but the resulting code would be UGLY
$offset = 0;
$len = strlen($str);
while($offset<$len) {
if(preg_match("/log_([\S]+?)\(/",$str,$m,PREG_OFFSET_CAPTURE,$offset)) {
View big_puzzle.txt
The following wordsearch grid contains some Christmas words. Clues run either left-to-right or top-to-bottom.
BUT: they've been encrypted! For each clue N+1, the grid is Vigenere-encrypted using clue N as the key.
For example, the first two rows of the grid when decrypted with the key EXAMPLE would be:
X R B X P Y A M M N I G V
S S A E N I D B M D H U C
The first clue is "CHRISTMAS". Find the next clue, and the next, and so on until you find CHRISTMAS in the grid.
As a bonus, each clue has a RED HERRING somewhere else in the grid.
T U B L A N W I P N W R K
View numbas-lti-provider-setup.md

These instructions will create a virtual machine in Vagrant, which runs the Numbas LTI provider proxied through nginx. If you want to run on a real machine, skip the first couple of steps to do with Vagrant. I used Ubuntu 16.04 - the process of installing packages will be different on different versions or different distributions.

I set up Vagrant to forward port 443 on the host machine to port 443 on the VM. I think this might only work on Windows. I'm not sure how to get it running on a different port - I had problems with the nginx proxy.

Create a directory for the vagrant VM:

mkdir numbas_lti
View morse-code-homonyms.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View palindrome_power_palindrome.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View geogebra.js
Numbas.addExtension('geogebra',[],function(extension) {
window.geogebraIdAcc = window.geogebraIdAcc || 0;
var delay = 10;
var container;
$(document).ready(function() {
container = document.createElement('div');
container.setAttribute('id','numbasgeogebracontainer');
container.setAttribute('class','invisible');
document.body.appendChild(container);
View swingy-thing.elm
import Html exposing (..)
import Html.App as Html
import Html.Attributes exposing (..)
import Html.Events exposing (on)
import Json.Decode as Json exposing ((:=))
import Mouse exposing (Position)
import Time exposing (Time, millisecond)
import String
import Task exposing (perform)
View walk.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View isthisprime_analysis.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View hexasphere.js
function canvasApp() {
if (!canvasSupport()) {
return
}
;var canvasOne = document.getElementById("canvasOne");
var context = canvasOne.getContext("2d");
setup();
var vec1;
var vec2;
var angle;