EAN-13 corrigeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

Junior Java Developer

Dit ga je doen Je ontwikkelt innovatieve, maatschappelijk belangrijke applicaties; Je implementeert nieuwe features; Je gaat in gesprek met eindgebruikers en designers om de applicaties continu te finetunen; Je draait mee in een professionele Agile/Scrum omgeving. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de omgeving van Amsterdam. Ze staan zeer goed bekend in de markt door hun innovatieve dienstverlening op IT gebied en hun gepassioneerde werknemers. Voor hun inspanningen op het gebied van IT hebben ze meerdere prijzen gewonnen! Onze klant is onderdeel van een Corporate werkgever en heeft zelf 300 mensen in dienst. Om

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

PHP developer (Laravel, Docker, Gitlab-CI)

Functie Het IT-team bestaat momenteel uit 4 ontwikkelaars. Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. Een groot deel van de systemen is gebouwd met behulp van het Laravel framework en PHP (minimaal 7.2), Docker voor lokaab gebruik en Gitlab-CI voor het deployen

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 »

Front End Developer React Vue

Dit ga je doen Meewerken aan de implementaties en ontwikkeling van nieuwe functionaliteiten van de webapplicaties; Ontwikkelen met o.a. React en Vue en HTML/CSS, ook krijg je in verband met de samenwerking ook affiniteit met de backend Ruby on Rails; Ontwikkeling aan de front end voor de koppelingen tussen de diverse systemen; Ontwerpen van interfaces en een bijdrage leveren aan de gebruikerservaring; Zorgdragen voor hoge kwaliteit van code en jezelf (en anderen) blijven verbeteren; Als Senior Front End Developer begeleid je zelf ook FE-development projecten, hierin leid je de projecten en pak jij het initiatief op (bv integratieprojecten). Hier ga

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Software Developer PHP JavaScript Python HBO SQL

Samengevat: Wij zijn een softwarebedrijf voor Autodealers. Ben jij een Medior of Senior Software Developer? Heb je ervaring met PHP, JavaScript of Python? Vaste baan: Java.Developer Software HBO €3.000 - €5.200 Bij ons op de werkvloer is er een positieve en informele sfeer. Naast een goede begeleiding en een enthousiaste klantenkring biedt deze werkgever een prettige omgeving met zeer afwisselende werkzaamheden. Houd jij van aanpakken en denk je dat je deze uitdaging aankunt? Dan zoeken wij jou! Zij werken voor grote klanten. Zij doen omvangrijke projecten die we bij deze werkgever op kantoor realiseren (geen detachering). Zij werken met state-of-the-art

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

.NET Developer

Functie omschrijving Ben jij een senior .NET developer en heb jij tevens ervaring als teamlead? Ben jij iemand met een helikopterview en denk jij graag mee met de klanten? Dan zijn wij op zoek naar jou! Voor een geweldig bedrijf zijn wij namelijk op zoek naar een ervaren .NET developer. Het bedrijf houdt zich bezig met het ontwerpen en bouwen van websites, portalen en applicaties voor met name zorg- en onderwijsinstellingen en overheidsinstanties. Jouw taken: Het fungeren als Lead Developer; Het meedenken met de business (dit vergt commercieel inzicht); Het begeleiden van diverse projecten (van klein tot groot); Het ontwerpen

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

06/12/2023 18:08:29
 
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.