#!/usr/bin/rdmd import std.stdio; void main() { uint guesses=0, high=100, low=0, guess=50; char returned; writef("Please choose a number between %s and %s.\n"); writef("Press enter to begin.",low,high); readln(); checkLoop: do { guess = (high-low)/2+low; // Avoid overflow (shouldn't occur) writef("Is your number %s? [(y)es, (h)igher, (l)ower] ", guess); readf("%c", &returned); readln(); switch(returned) { case 'y','Y': break checkLoop; case 'h','H': {low=guess; break;} case 'l','L': {high=guess; break;} default: break; } } while(++guesses); writef("I guessed your number in %s moves!\n", guesses); }
This piece is something I wrote quickly for /r/dailyprogrammer (By the way, is the person who has been posting D solutions to that on here?) It's a really simple piece, but it shows %s, breaking from a loop from inside a switch, etc.