#lang racket

(require "challenge.rkt")

(provide challenges)

;This file contains the challenges of the platform
;Make sure the id's are incremental, starting from 0 and correspond to the challenges displayed on the platform
;VERY IMPORTANT: NEVER ALLOW STATE! If state is allowed e.g. through set! it can be abused to simply hardcode the output
;I also recommend making the first challenge a sanity check for instance by having the input and output be the same

(define variable-names
  '(a b c d e f g h i j k l m n o p q r s t u v w x y z))

(define challenges
  (list
    (make-challenge
      0
      "This challenge is the sanity check! Try writing a lambda that maps the inputs to the outputs."
      "IGCTF{CongratulationsYouAreSane!}"
      (list 1 2 3 4 5 6 7 8 9 10)
      (list 2 3 4 5 6 7 8 9 10 11)
      `(,@(take variable-names 1) + lambda))
    (make-challenge
      1
      "In this challenge you have to determine if a given number is even."
      "IGCTF{FunThingsAreFun}"
      (list 6 3 4 9 1 2 4 500 321 1337)
      (list #t #f #t #f #f #t #t #t #f #f)
      `(,@(take variable-names 5) define lambda begin if + - =))
    (make-challenge
      2
      "Same as the previous one, but you don't get to use an if."
      "IGCTF{ICantThinkOfGoodFlags}"
      (list 6 3 4 9 1 2 4 500 321 1337)
      (list #t #f #t #f #f #t #t #t #f #f)
      `(,@(take variable-names 5) define lambda begin or not and + - =))
    (make-challenge
      3
      "Fine, you can have your if back. But i'm taking away your precious define and begin!"
      "IGCTF{LambdasArePrettyAwesome}"
      (list 6 3 4 9 1 2 4 500 321 1337)
      (list #t #f #t #f #f #t #t #t #f #f)
      `(,@(take variable-names 5) lambda if + - =))))

