#include <stdio.h>
/*
* Function: validateIrishLicense
* Description: Validates an Irish license plate
* for years 2013 through 2024.
*
* Parameters:
* year - Two-digit year (13-24)
* halfYear - Registration period (1 or 2)
* county - County registration code
* sequence - Registration sequence number
*
* Returns: 1 if valid, 0 if invalid
*/
// Function Prototype
int validateIrishLicense(int year, int halfYear,
char county, int sequence);
int main()
{
int retVal;
// Test 1: Valid license plate
retVal = validateIrishLicense(13, 1, 'D', 21);
printf("Test 1: %d\n", retVal
);
// Test 2: Invalid half year and county
retVal = validateIrishLicense(13, 3, 'K', 1);
printf("Test 2: %d\n", retVal
);
// Test 3: Invalid sequence number
retVal = validateIrishLicense(24, 1, 'C', 1245891);
printf("Test 3: %d\n", retVal
);
// Test 4: Valid lowercase county
retVal = validateIrishLicense(20, 2, 'g', 456);
printf("Test 4: %d\n", retVal
);
return 0;
}
// Function Definition
int validateIrishLicense(int year, int halfYear,
char county, int sequence)
{
// Validate year
if (year < 13 || year > 24)
{
return 0;
}
// Validate half year
if (halfYear != 1 && halfYear != 2)
{
return 0;
}
// Validate county
if (county != 'C' && county != 'c' &&
county != 'D' && county != 'd' &&
county != 'G' && county != 'g' &&
county != 'L' && county != 'l' &&
county != 'T' && county != 't' &&
county != 'W' && county != 'w')
{
return 0;
}
// Validate sequence number
if (sequence < 1 || sequence > 999999)
{
return 0;
}
// All conditions passed
return 1;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKLyoKICogRnVuY3Rpb246IHZhbGlkYXRlSXJpc2hMaWNlbnNlCiAqIERlc2NyaXB0aW9uOiBWYWxpZGF0ZXMgYW4gSXJpc2ggbGljZW5zZSBwbGF0ZQogKiAgICAgICAgICAgICAgZm9yIHllYXJzIDIwMTMgdGhyb3VnaCAyMDI0LgogKgogKiBQYXJhbWV0ZXJzOgogKiB5ZWFyICAgICAtIFR3by1kaWdpdCB5ZWFyICgxMy0yNCkKICogaGFsZlllYXIgLSBSZWdpc3RyYXRpb24gcGVyaW9kICgxIG9yIDIpCiAqIGNvdW50eSAgIC0gQ291bnR5IHJlZ2lzdHJhdGlvbiBjb2RlCiAqIHNlcXVlbmNlIC0gUmVnaXN0cmF0aW9uIHNlcXVlbmNlIG51bWJlcgogKgogKiBSZXR1cm5zOiAxIGlmIHZhbGlkLCAwIGlmIGludmFsaWQKICovCgovLyBGdW5jdGlvbiBQcm90b3R5cGUKaW50IHZhbGlkYXRlSXJpc2hMaWNlbnNlKGludCB5ZWFyLCBpbnQgaGFsZlllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvdW50eSwgaW50IHNlcXVlbmNlKTsKCmludCBtYWluKCkKewogICAgaW50IHJldFZhbDsKCiAgICAvLyBUZXN0IDE6IFZhbGlkIGxpY2Vuc2UgcGxhdGUKICAgIHJldFZhbCA9IHZhbGlkYXRlSXJpc2hMaWNlbnNlKDEzLCAxLCAnRCcsIDIxKTsKICAgIHByaW50ZigiVGVzdCAxOiAlZFxuIiwgcmV0VmFsKTsKCiAgICAvLyBUZXN0IDI6IEludmFsaWQgaGFsZiB5ZWFyIGFuZCBjb3VudHkKICAgIHJldFZhbCA9IHZhbGlkYXRlSXJpc2hMaWNlbnNlKDEzLCAzLCAnSycsIDEpOwogICAgcHJpbnRmKCJUZXN0IDI6ICVkXG4iLCByZXRWYWwpOwoKICAgIC8vIFRlc3QgMzogSW52YWxpZCBzZXF1ZW5jZSBudW1iZXIKICAgIHJldFZhbCA9IHZhbGlkYXRlSXJpc2hMaWNlbnNlKDI0LCAxLCAnQycsIDEyNDU4OTEpOwogICAgcHJpbnRmKCJUZXN0IDM6ICVkXG4iLCByZXRWYWwpOwoKICAgIC8vIFRlc3QgNDogVmFsaWQgbG93ZXJjYXNlIGNvdW50eQogICAgcmV0VmFsID0gdmFsaWRhdGVJcmlzaExpY2Vuc2UoMjAsIDIsICdnJywgNDU2KTsKICAgIHByaW50ZigiVGVzdCA0OiAlZFxuIiwgcmV0VmFsKTsKCiAgICByZXR1cm4gMDsKfQoKLy8gRnVuY3Rpb24gRGVmaW5pdGlvbgppbnQgdmFsaWRhdGVJcmlzaExpY2Vuc2UoaW50IHllYXIsIGludCBoYWxmWWVhciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY291bnR5LCBpbnQgc2VxdWVuY2UpCnsKICAgIC8vIFZhbGlkYXRlIHllYXIKICAgIGlmICh5ZWFyIDwgMTMgfHwgeWVhciA+IDI0KQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIFZhbGlkYXRlIGhhbGYgeWVhcgogICAgaWYgKGhhbGZZZWFyICE9IDEgJiYgaGFsZlllYXIgIT0gMikKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBWYWxpZGF0ZSBjb3VudHkKICAgIGlmIChjb3VudHkgIT0gJ0MnICYmIGNvdW50eSAhPSAnYycgJiYKICAgICAgICBjb3VudHkgIT0gJ0QnICYmIGNvdW50eSAhPSAnZCcgJiYKICAgICAgICBjb3VudHkgIT0gJ0cnICYmIGNvdW50eSAhPSAnZycgJiYKICAgICAgICBjb3VudHkgIT0gJ0wnICYmIGNvdW50eSAhPSAnbCcgJiYKICAgICAgICBjb3VudHkgIT0gJ1QnICYmIGNvdW50eSAhPSAndCcgJiYKICAgICAgICBjb3VudHkgIT0gJ1cnICYmIGNvdW50eSAhPSAndycpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gVmFsaWRhdGUgc2VxdWVuY2UgbnVtYmVyCiAgICBpZiAoc2VxdWVuY2UgPCAxIHx8IHNlcXVlbmNlID4gOTk5OTk5KQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIEFsbCBjb25kaXRpb25zIHBhc3NlZAogICAgcmV0dXJuIDE7Cn0K