EAN-13 corrigeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Python (Django) developer - Remote in The Netherla

Functie Together with your team, consisting of a senior, 2 mediors and one junior developer, you will work on their software in an Agile-based approach. You have an eye for quality, risk, and customer interest. Communication with your colleagues and, where necessary, with customers, plays an important role in achieving a successful result. As a person, you are smart, get things done, and are result-oriented. There is a lot of independence within the development team, apart from the stand-up (10:00 am) and occasional pair-programming sessions. Techniques they use include Python, Django, MySQL, Mercurial, Ubuntu Linux, Nginx. In terms of front-end

Bekijk vacature »

Software Developer C++ en Perl

Ben je een slimme en enthousiaste universitair opgeleide bèta die graag bij een relatief klein softwarebedrijf wil werken waar de sfeer goed is en eigen inbreng gewaardeerd wordt? Wij, IntelliMagic in Leiden, ontwikkelen technisch hoogwaardige software op het gebied van IT infrastructuur performance analytics. Het type software zorgt voor intellectueel interessante uitdagingen. We ontwerpen de producten zelf en verkopen deze als off-the-shelf software aan grote bedrijven in Europa en de VS. Wij zoeken een ervaren C++ software engineer met kennis van Perl voor een van onze ontwikkelteams. Werkzaamheden Samen met de andere ontwikkelaars specificeren, ontwerpen en implementeren van nieuwe functionaliteit

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

PHP/Symfony developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Bergen op Zoom ben je als PHP/Symfony Developer niet alleen bezig met software ontwikkeling. Je bent buiten ontwikkeling ook continu bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Techstack: PHP, Symfony & mySQL. Jouw takenpakket ziet er als volgt uit: Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

Fullstack developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een andere uitdaging? Voor een erkende werkgever in de omgeving van Breda zijn wij op zoek naar een Fullstack developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in

Bekijk vacature »

SQL database developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als SQL database developer? Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het development team zijn wij op zoek naar een SQL database ontwikkelaar. Wil jij werken voor een groeiende werkgever in regio Breda waar jij de ruimte en tijd krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van logistieke processen; Je gaat projecten vanaf het begin tot het

Bekijk vacature »
Ward van der Put
Moderator

Ward van der Put

20/09/2016 12:12:21
Quote Anchor link
Als $number een Europees artikelnummer van 12 cijfers is, kun je als volgt het 13e controlecijfer berekenen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
public function getCheckDigit($number)
{

    $weight_flag = true;
    $sum = 0;
    for ($i = strlen($number) - 1; $i >= 0; $i--) {
        $sum += (int)$number[$i] * ($weight_flag ? 3 : 1);
        $weight_flag = !$weight_flag;
    }

    return (10 - ($sum % 10)) % 10;
}

?>


Deze methode komt uit een class die ik heb geschreven voor een EAN-13. Een EAN-13 heeft nog een handige eigenschap waarvoor ik een methode wil toevoegen: als 1 cijfer onjuist is (bijvoorbeeld door een tikfout), kun je met 100% zekerheid het juiste EAN-nummer bepalen.

Hoe kan ik dat het beste aanpakken?
 
PHP hulp

PHP hulp

18/07/2025 21:38:08
 
Ozzie PHP

Ozzie PHP

20/09/2016 14:39:04
Quote Anchor link
Het nadeel lijkt me dat er ook 2 tikfouten in kunnen staan. Dan krijg je het nooit goed lijkt me.

>> Hoe kan ik dat het beste aanpakken?

Als het inderdaad 1 fout is ... dan per cijfer alle mogelijkheden doorlopen en kijken of de controle slaagt. Dus stel het EAN-nummers is (fictief):

0001112223334

Dan begin je met het 1e cijfer, in dit geval een 0. Daar maak je dan respectievelijk 0 t/m 9 van:

0001112223334
1001112223334
2001112223334
3001112223334
4001112223334
5001112223334
6001112223334
7001112223334
8001112223334
9001112223334

En na iedere keer voer je dan de controle uit. Slaagt de controle niet? Dan ga je het 2e cijfer aanpassen:

0001112223334
0101112223334
0201112223334
0301112223334
0401112223334
0501112223334
0601112223334
0701112223334
0801112223334
0901112223334

En nu ook weer ná iedere variant een controle uitvoeren. En dit doe je dan net zo lang totdat de controle slaagt. Maar dit werkt alleen als er maar 1 fout in zit. Als je pech hebt, dan ben je dus 130 controles aan het uitvoeren zonder resultaat.

Succes!
 
Ward van der Put
Moderator

Ward van der Put

20/09/2016 14:47:04
Quote Anchor link
Dank je Ozzie. Die iteratie had ik al in gedachten, als plan B. Ik vermoed namelijk dat het ook met een formule kan — alleen welke?

>> Het nadeel lijkt me dat er ook 2 tikfouten in kunnen staan.

Dat staat ook op de verlanglijst, maar is een andere vraag. Je kunt bij een EAN-13 namelijk met 90% zekerheid het juiste nummer terugvinden als twee cijfers van positie zijn verwisseld. (Dat wil ik uiteindelijk ook inbouwen, omdat dit een veelvoorkomend type invoerfout is.) Het verschil is dat ik met 100% zekerheid in het eerste geval beter uit de voeten kan dan met 90%.
Gewijzigd op 20/09/2016 15:30:17 door Ward van der Put
 
Thomas van den Heuvel

Thomas van den Heuvel

20/09/2016 15:01:54
Quote Anchor link
Quote:
als 1 cijfer onjuist is (bijvoorbeeld door een tikfout), kun je met 100% zekerheid het juiste EAN-nummer bepalen.

Heb je ook een bewijs dat een fout EAN-nummer met één tikfout ook maximaal één correct EAN-nummer oplevert (oftewel: is het direct/ondubbelzinnig duidelijk welk cijfer fout was)? Of brei je iets incorrects recht naar een willekeurig EAN-nummer?

Als je een tegenvoorbeeld kunt vinden waarbij je een fout EAN-nummer hebt waarbij je een ander cijfer dan de tikfout corrigeert zodanig dat dit een (ander) geldig EAN-nummer oplevert kun je dit idee laten varen :).

Of bedien je van een simpelere strategie: fout is fout.
 
Ward van der Put
Moderator

Ward van der Put

20/09/2016 15:15:06
Quote Anchor link
Thomas van den Heuvel op 20/09/2016 15:01:54:
Quote:
als 1 cijfer onjuist is (bijvoorbeeld door een tikfout), kun je met 100% zekerheid het juiste EAN-nummer bepalen.

Heb je ook een bewijs dat een fout EAN-nummer met één tikfout ook maximaal één correct EAN-nummer oplevert (oftewel: is het direct/ondubbelzinnig duidelijk welk cijfer fout was)? Of brei je iets incorrects recht naar een willekeurig EAN-nummer?

Geen wiskundig bewijs, wel anekdotisch bewijs. ;-)

In particular, since the weights are relatively prime to 10, the EAN-13 system will detect all single digit errors. It also recognizes 90% of transposition errors (all cases, where the difference between adjacent digits is not 5).
 
Bo Ter Ham

Bo Ter Ham

20/09/2016 17:10:28
Quote Anchor link
Ik wil niet de wijsneus uit gaan hangen, maar betekent bovenstaande quote niet dat je "single digit errors" met 100% zekerheid kan detecteren? M.a.w. dat 1 en 3 relatief priem zijn met 10 impliceert alleen dat de checksum nooit correct zal zijn als de barcode incorrect is. Volgens mij bestaat er geen "handige" formule om een incorrecte EAN code om te toveren in een correcte EAN code.
Gewijzigd op 20/09/2016 17:11:55 door Bo Ter Ham
 
Willem vp

Willem vp

20/09/2016 18:48:30
Quote Anchor link
Bo Ter Ham op 20/09/2016 17:10:28:
Ik wil niet de wijsneus uit gaan hangen, maar betekent bovenstaande quote niet dat je "single digit errors" met 100% zekerheid kan detecteren?

Dat was ook het eerste dat ik dacht toen ik Wards bericht las. ;-)

Volgens mij kun je in het geval van een single digit error elk van de 13 digits (dus ook het controlegetal) dusdanig manipuleren dat je een correct EAN krijgt. En zelfs als die uitspraak niet zou kloppen, dan zijn er in ieder geval minimaal 2 mogelijkheden om het EAN kloppend te krijgen: het corrigeren van de foute digit en het corrigeren van het controlegetal.

Om erachter te kunnen komen welk van de digits verkeerd is ingetikt, zou je m.i. minimaal twee controlegetallen moeten hebben die elk op een andere manier worden berekend.
 
Ward van der Put
Moderator

Ward van der Put

21/09/2016 09:05:38
Quote Anchor link
Bo Ter Ham op 20/09/2016 17:10:28:
Ik wil niet de wijsneus uit gaan hangen, maar betekent bovenstaande quote niet dat je "single digit errors" met 100% zekerheid kan detecteren?

Dat is héél scherp opgemerkt, dank je wel!

Het is bovendien logisch om een andere reden: als een EAN ongeldig is, kun je niet zien hoeveel invoerfouten er zijn gemaakt. Een gebruiker (of scanner) kan één cijfer maar ook meerdere cijfers verkeerd hebben. Probeer je die invoerfout te herstellen, dan krijg je inderdaad altijd een lijst met veel geldige alternatieven. (Wel kun je dan op basis van de overeenkomsten/verschillen daar nog een kans aan hangen die sommige alternatieven waarschijnlijker maakt dan andere, maar dan nog biedt dat weinig zekerheid.)
 
Pieter de Gent

Pieter de Gent

27/09/2016 12:45:49
Quote Anchor link
**knip**

Edit:
Spamlink verwijderd!
Gewijzigd op 27/09/2016 12:49:05 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.