(defvar *first-column* '("Temporary" "Intermittant" "Partial" "Redundant" "Total" "Multiplexed" "Inherent" "Duplicated" "Dual-Homed" "Synchronous" "Bidirectional" "Serial" "Asynchronous" "Multiple" "Replicated" "Non-Replicated" "Unregistered" "Non-Specific" "Generic" "Migrated" "Localised" "Resignalled" "Dereferenced" "Nullified" "Aborted" "Serious" "Minor" "Major" "Extraneous" "Illegal" "Insufficient" "Viral" "Unsupported" "Outmoded" "Legacy" "Permanent" "Invalid" "Deprecated" "Virtual" "Unreportable" "Undetermined" "Undiagnosable" "Unfiltered" "Static" "Dynamic" "Delayed" "Immediate" "Nonfatal" "Fatal" "Non-Valid" "Unvalidated" "Non-Static" "Unreplicatable" "Non-Serious")) (defvar *first-length* (length *first-column*)) (defvar *second-column* '("Array" "Systems" "Hardware" "Software" "Firmware" "Backplane" "Logic-Subsystem" "Integrity" "Subsystem" "Memory" "Comms" "Integrity" "Checksum" "Protocol" "Parity" "Bus" "Timing" "Synchronisation" "Topology" "Transmission" "Reception" "Stack" "Framing" "Code" "Programming" "Peripheral" "Environmental" "Loading" "Operation" "Parameter" "Syntax" "Initialisation" "Execution" "Resource" "Encryption" "Decryption" "File" "Precondition" "Authentication" "Paging" "Swapfile" "Service" "Gateway" "Request" "Proxy" "Media" "Registry" "Configuration" "Metadata" "Streaming" "Retrieval" "Installation" "Library" "Handler")) (defvar *second-length* (length *second-column*)) (defvar *third-column* '("Interruption" "Destabilisation" "Destruction" "Desynchronisation" "Failure" "Dereferencing" "Overflow" "Underflow" "NMI" "Interrupt" "Corruption" "Anomoly" "Seizure" "Override" "Reclock" "Rejection" "Invalidation" "Halt" "Exhaustion" "Infection" "Incompatibility" "Timeout" "Expiry" "Unavailability" "Bug" "Condition" "Crash" "Dump" "Crashdump" "Stackdump" "Problem" "Lockout")) (defvar *third-length* (length *third-column*)) (defvar *optional-fourth-column* '("Error" "Problem" "Warning" "Signal" "Flag")) (defvar *fourth-length* (length *optional-fourth-column*)) (defvar *initialized-p* nil) (defun ensure-positive (number) (if (< number 0) (- number) number)) (defun ensure-initialized () (when (not *initialized-p*) (setq *random-state* (make-random-state t) *initialized-p* t) (dotimes (number (ensure-positive (random 100))) (dotimes (other (ensure-positive (random (1+ number)))) (dotimes (yet-another (ensure-positive (random (1+ other)))) (ensure-positive (random (1+ yet-another)))))))) (defun get-excuse (stream) (ensure-initialized) (let ((first-word (nth (ensure-positive (1- (random *first-length*))) *first-column*)) (second-word (nth (ensure-positive (1- (random *second-length*))) *second-column*)) (third-word (nth (ensure-positive (1- (random *third-length*))) *third-column*)) (fourth-word (nth (ensure-positive (1- (random *fourth-length*))) *optional-fourth-column*))) (format stream "~a ~a ~a (~a)~%" first-word second-word third-word fourth-word))) (defun main () (let ((count (if (not (null (second *posix-argv*))) (parse-integer (second *posix-argv*) :junk-allowed t) 1))) (dotimes (n count) (declare (ignorable n)) (get-excuse *standard-output*))))