Justen Falk's entry
unknown
javascript
3 years ago
4.7 kB
8
Indexable
// Write a function which take the container number as
// the input and returns the company which it belongs to
// 1. MCU123458323 -> STARK,
// COS123458910 -> COSCO, (3 letters, 9 numbers)
// # 2 LAS1234589101, LAS12345 (LAS letters, 5-11 numbers)-> LASCO,
// # DAS1234589101 (DAS letters, 3-15 numbers)-> DASCO
// # 3 PAS1234583232, PASDE123458323 (PAS, PASDE, 6-13 numbers)-> PASCO ,
// # GRE1234583232, GREEK458910, GREE3123213(GRE, GREEK, GREE, 5-13 numbers) -> GREEKO
(() => {
const idMapping = {
'MCU': ['MCU'],
'COS': ['COS'],
'LAS': ['LAS'],
'DAS': ['DAS'],
'PAS': ['PAS', 'PASDE'],
'GRE': ['GRE', 'GREEK', 'GREE'],
};
function findContainerCompany(containerId) {
let validation = false;
let companyId = containerId.slice(0,3);
let serialLengthValidation, serialIndex;
switch(companyId) {
case 'MCU':
validation = containerId.length === 12 && Number(containerId.slice(3));
if (validation)
return 'STARK';
break;
case 'COS':
validation = containerId.length === 12 && Number(containerId.slice(3));
if (validation)
return 'COSCO';
break;
case 'LAS':
serialLengthValidation = containerId.length >= 8 && containerId.length <= 14;
serialIndex = Array.from(containerId).findIndex(Number)
validation = serialLengthValidation && Number(containerId.slice(serialIndex))
if (validation)
return 'LASCO';
break;
case 'DAS':
serialLengthValidation = containerId.length >= 6 && containerId.length <= 18;
serialIndex = Array.from(containerId).findIndex(Number)
validation = serialLengthValidation && Number(containerId.slice(serialIndex))
if (validation)
return 'DASCO';
break;
case 'PAS':
serialIndex = Array.from(containerId).findIndex(Number)
companyId = containerId.slice(0, serialIndex);
if (idMapping['PAS'].includes(companyId)) {
serialLengthValidation = containerId.length >= 9 && containerId.length <= 18;
validation = serialLengthValidation && Number(containerId.slice(serialIndex))
}
if (validation)
return 'PASCO';
break;
case 'GRE':
serialIndex = Array.from(containerId).findIndex(Number)
companyId = containerId.slice(0, serialIndex);
if (idMapping['GRE'].includes(companyId)) {
serialLengthValidation = containerId.length >= 8 && containerId.length <= 18;
validation = serialLengthValidation && Number(containerId.slice(serialIndex))
}
if (validation)
return 'GREEKO';
break;
}
return 'n/a'
}
const ans1 = findContainerCompany('MCU123458323')
console.log("🚀 ~ ans1", 'MCU123458323', ans1)
const ans2 = findContainerCompany('COS123458910')
console.log("🚀 ~ ans2", 'COS123458910', ans2)
const ans3 = findContainerCompany('foo')
console.log("🚀 ~ ans3", 'foo', ans3)
const ans4 = findContainerCompany('MCU1234583233213213123')
console.log("🚀 ~ ans4", 'MCU1234583233213213123', ans4)
const ans5 = findContainerCompany('MCU123458MCU')
console.log("🚀 ~ ans5", 'MCU123458MCU', ans5)
const ans6 = findContainerCompany('LAS1234589101')
console.log("🚀 ~ ans6", 'LAS1234589101', ans6)
const ans7 = findContainerCompany('LAS12345')
console.log("🚀 ~ ans7", 'LAS12345', ans7)
const ans8 = findContainerCompany('DAS1234589101')
console.log("🚀 ~ ans8", 'DAS1234589101', ans8)
const edge1 = findContainerCompany('DAS123')
console.log("🚀 ~ edge1", 'DAS123', edge1)
const edge2 = findContainerCompany('DAS123456789012345')
console.log("🚀 ~ edge2", 'DAS123456789012345', edge2)
const edge4 = findContainerCompany('DAS123D123')
console.log("🚀 ~ edge4", 'DAS123D123', edge4)
const test1 = findContainerCompany('PAS1234583232')
console.log("🚀 ~ test1", 'PAS1234583232', test1)
const test2 = findContainerCompany('PASDE123458323')
console.log("🚀 ~ test2", 'PASDE123458323', test2)
const test3 = findContainerCompany('GRE1234583232')
console.log("🚀 ~ test3", 'GRE1234583232', test3)
const test4 = findContainerCompany('GREEK458910')
console.log("🚀 ~ test4", 'GREEK458910', test4)
const test5 = findContainerCompany('GREE3123213')
console.log("🚀 ~ test5", 'GREE3123213', test5)
})()
Editor is loading...