Skip to content

Instantly share code, notes, and snippets.

@raziel23x
Created January 29, 2015 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raziel23x/8cf2b7638632a46ab684 to your computer and use it in GitHub Desktop.
Save raziel23x/8cf2b7638632a46ab684 to your computer and use it in GitHub Desktop.
Programmers cookies
#define COOKIES_PER_BATCH 24;
#define ROWS_PER_SHEET 3;
#define COLUMNS_PER_SHEET 2;
var bowl1, bowl2, platter;
var wet_ingredients[] = { sugar, brown_sugar, melted_butter, milk, vanilla };
var dry_ingredients[] = {flour, baking_soda, salt };
var choc_chips, eggs[2];
var oven;
var baking_sheet[][] = new cookie[ROWS_PER_SHEET][COLUMNS_PER_SHEET];
Main()
{
oven.Initialize(375);
AddIngredients(wet_ingredients, ref bowl1);
bowl1 += egg[0];
egg[1] -= egg_white;
bowl1 += egg[1];
Cooking.Util.Mix(bowl1);
AddIngredients(dry_ingredients, ref bowl2);
CombineReceptacles(bowl2, ref bowl1);
bowl1 += chocolate_chips;
Cooking.Util.Mix(bowl1);
bowl1 -= raw_dough / rand(100); // Source of "girlfriend likes raw dough" issue?
while (bowl1.IsEmpty() == false)
{
CreateDropCookies(ref baking_sheet, bowl1);
BakeCookies(baking_sheet);
RemoveCookiesFromSheet(baking_sheet, ref platter);
}
}
AddIngredients(ingredients, ref receptacle)
{
for (int ing_num = 0; ing_num < ingredients.count; ing_num++)
{
receptacle += ingredients[ing_num];
}
Cooking.Util.Mix(receptacle);
}
CombineReceptacles(src, ref dest)
{
// Risk buffer overrun if added all at once. Workaround: add in 4ths
for (part = 0; part < 4; part++)
{
dest += memcpy(src + sizeof(src / 4), sizeof(src / 4));
Cooking.Util.Mix(dest);
}
}
CreateDropCookies(ref baking_sheet, bowl1)
{
for (row = 0; row < ROWS_PER_SHEET; row++)
{
for (column = 0; column < COLUMNS_PER_SHEET; column++)
{
if (bowl1.IsEmpty())
{
break;
}
var doughsize = sizeof(bowl1 / COOKIES_PER_BATCH);
var doughball = new Doughball(bowl1, doughsize);
baking_sheet[row][column] = doughball;
bowl1 -= doughball;
}
}
}
BakeCookies(baking_sheet)
{
oven += baking_sheet;
System.Util.Delay(840000); // 14 minutes. Switch to async timer for multitasking.
oven -= baking_sheet;
}
RemoveCookiesFromSheet(baking_sheet, platter)
{
for (row = 0; row < ROWS_PER_SHEET; row++)
{
for (column = 0; column < COLUMNS_PER_SHEET; column++)
{
if (baking_sheet[row][column] != null)
{
platter.Add(baking_sheet[row][column]);
baking_sheet[row][column] = null;
}
}
}
platter.Remove(1); // one for the cook!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment