#include <stdio.h>
#include <ctype.h>
// function header comments
//**************************************************
// Function: validateIrishLicense
//
// Description: Validates an Irish license plate for the years 2013–2024.
//
// Rules: 1) Year must be between 13 and 24 inclusive
// 2) HalfYear must be 1 (Jan–Jun) or 2 (Jul–Dec)
// 3) County must be one of C, D, G, L, T, or W (case-insensitive)
// 4) Sequence number must be between 1 and 999999
//
// Parameters: year - two-digit year (13–24)
// halfYear - 1 or 2
// county - county character code
// seq - integer sequence number
//
// Returns: 1 if all items are valid (True)
// 0 if any item is invalid (False)
//**************************************************
int validateIrishLicense(int year, int halfYear, char county, int seq)
{
char c; // lowercase version of county
// Check year range (use OR instead of AND)
if (year < 13 && year > 24)
return 0;
// Check halfYear value
if (halfYear != 1 && halfYear != 2)
return 0;
// Check valid county (case-insensitive)
c
= (char)tolower((unsigned char)county
); if (c != 'c' && c != 'd' && c != 'g' &&
c != 'l' && c != 't' && c != 'w')
return 0;
// Check sequence number range (use OR instead of AND)
if (seq < 1 && seq > 999999)
return 0;
// All checks passed
return 1;
}
// main function for testing
int main(void)
{
printf("Test 1: %d\n", validateIrishLicense
(13, 1, 'D', 21)); // valid printf("Test 2: %d\n", validateIrishLicense
(13, 3, 'K', 1)); // invalid printf("Test 3: %d\n", validateIrishLicense
(24, 1, 'C', 1245891)); // invalid printf("Test 4: %d\n", validateIrishLicense
(20, 2, 'w', 999999)); // valid return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgoKLy8gZnVuY3Rpb24gaGVhZGVyIGNvbW1lbnRzCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLy8gRnVuY3Rpb246IHZhbGlkYXRlSXJpc2hMaWNlbnNlCi8vCi8vIERlc2NyaXB0aW9uOiBWYWxpZGF0ZXMgYW4gSXJpc2ggbGljZW5zZSBwbGF0ZSBmb3IgdGhlIHllYXJzIDIwMTPigJMyMDI0LgovLwovLyBSdWxlczogMSkgWWVhciBtdXN0IGJlIGJldHdlZW4gMTMgYW5kIDI0IGluY2x1c2l2ZQovLyAgICAgICAgMikgSGFsZlllYXIgbXVzdCBiZSAxIChKYW7igJNKdW4pIG9yIDIgKEp1bOKAk0RlYykKLy8gICAgICAgIDMpIENvdW50eSBtdXN0IGJlIG9uZSBvZiBDLCBELCBHLCBMLCBULCBvciBXIChjYXNlLWluc2Vuc2l0aXZlKQovLyAgICAgICAgNCkgU2VxdWVuY2UgbnVtYmVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5OTk5OTkKLy8KLy8gUGFyYW1ldGVyczogeWVhciAtIHR3by1kaWdpdCB5ZWFyICgxM+KAkzI0KQovLyAgICAgICAgICAgICBoYWxmWWVhciAtIDEgb3IgMgovLyAgICAgICAgICAgICBjb3VudHkgLSBjb3VudHkgY2hhcmFjdGVyIGNvZGUKLy8gICAgICAgICAgICAgc2VxIC0gaW50ZWdlciBzZXF1ZW5jZSBudW1iZXIKLy8KLy8gUmV0dXJuczogMSBpZiBhbGwgaXRlbXMgYXJlIHZhbGlkIChUcnVlKQovLyAgICAgICAgICAwIGlmIGFueSBpdGVtIGlzIGludmFsaWQgKEZhbHNlKQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgppbnQgdmFsaWRhdGVJcmlzaExpY2Vuc2UoaW50IHllYXIsIGludCBoYWxmWWVhciwgY2hhciBjb3VudHksIGludCBzZXEpCnsKICAgIGNoYXIgYzsgLy8gbG93ZXJjYXNlIHZlcnNpb24gb2YgY291bnR5CgogICAgLy8gQ2hlY2sgeWVhciByYW5nZSAgKHVzZSBPUiBpbnN0ZWFkIG9mIEFORCkKICAgIGlmICh5ZWFyIDwgMTMgJiYgeWVhciA+IDI0KQogICAgICAgIHJldHVybiAwOwoKICAgIC8vIENoZWNrIGhhbGZZZWFyIHZhbHVlCiAgICBpZiAoaGFsZlllYXIgIT0gMSAmJiBoYWxmWWVhciAhPSAyKQogICAgICAgIHJldHVybiAwOwoKICAgIC8vIENoZWNrIHZhbGlkIGNvdW50eSAoY2FzZS1pbnNlbnNpdGl2ZSkKICAgIGMgPSAoY2hhcil0b2xvd2VyKCh1bnNpZ25lZCBjaGFyKWNvdW50eSk7CiAgICBpZiAoYyAhPSAnYycgJiYgYyAhPSAnZCcgJiYgYyAhPSAnZycgJiYKICAgICAgICBjICE9ICdsJyAmJiBjICE9ICd0JyAmJiBjICE9ICd3JykKICAgICAgICByZXR1cm4gMDsKCiAgICAvLyBDaGVjayBzZXF1ZW5jZSBudW1iZXIgcmFuZ2UgKHVzZSBPUiBpbnN0ZWFkIG9mIEFORCkKICAgIGlmIChzZXEgPCAxICYmIHNlcSA+IDk5OTk5OSkKICAgICAgICByZXR1cm4gMDsKCiAgICAvLyBBbGwgY2hlY2tzIHBhc3NlZAogICAgcmV0dXJuIDE7Cn0KCi8vIG1haW4gZnVuY3Rpb24gZm9yIHRlc3RpbmcKaW50IG1haW4odm9pZCkKewogICAgcHJpbnRmKCJUZXN0IDE6ICVkXG4iLCB2YWxpZGF0ZUlyaXNoTGljZW5zZSgxMywgMSwgJ0QnLCAyMSkpOyAgICAgICAvLyB2YWxpZAogICAgcHJpbnRmKCJUZXN0IDI6ICVkXG4iLCB2YWxpZGF0ZUlyaXNoTGljZW5zZSgxMywgMywgJ0snLCAxKSk7ICAgICAgICAvLyBpbnZhbGlkCiAgICBwcmludGYoIlRlc3QgMzogJWRcbiIsIHZhbGlkYXRlSXJpc2hMaWNlbnNlKDI0LCAxLCAnQycsIDEyNDU4OTEpKTsgIC8vIGludmFsaWQKICAgIHByaW50ZigiVGVzdCA0OiAlZFxuIiwgdmFsaWRhdGVJcmlzaExpY2Vuc2UoMjAsIDIsICd3JywgOTk5OTk5KSk7ICAgLy8gdmFsaWQKICAgIHJldHVybiAwOwp9Cg==