EAN-13 corrigeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-End Developer Design System

You work together with other development teams and designers to improve the webshop on a daily basis to make our customers happy. How do I become a Front-End Developer Design System at Coolblue? At Coolblue, we’re convinced that Design Systems help us build effective customer journeys. The dedicated Design System team collaborates with designers and developers alike to build a collection of tried and true building blocks, patterns & guidelines. You’ll look at the user-friendliness of our webshop and are convinced that great design should be accessible to all. You are passionate about developing consistent and effective User Experiences; you

Bekijk vacature »

Software Engineer bij informele organisatie met ma

Word jij gelukkig van een afwisselende baan op het snijvlak van inhoud en techniek? En wil jij vanuit jouw ICT expertise en klantgerichte houding het verschil maken bij hetexpertisecentrum voor veilig geneesmiddelengebruik? Dan kan dat! Wij zoeken ter uitbreiding van onze afdeling ICT een: Software-engineer voor 32 - 40 uur per week Jouw belangrijkste taken zijn: Op het kruispunt van business en technologie vertaal je vraagstukken op het gebied van zorg-ICT naar bruikbare software. In nauwe samenwerking met onze apothekers en huisartsen van de zorginhoudelijke afdelingen, denk je mee over functioneel ontwerp en ontwikkel, onderhoud en test je de interne

Bekijk vacature »

Senior C# developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Senior C# developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of Dynamo/Cosmos. Problemen oplossen

Bekijk vacature »

Support Engineer

Support Engineer Ben jij communicatief sterk? En word jij blij als onze klanten dat ook zijn? Lees dan zeker verder! Wie zijn wij? KindPlanner Software is een ambitieuze en snelgroeiende softwareleverancier die zich richt op de kinderopvangbranche. Haar product KindPlanner is een 100% cloudoplossing die het kantoor, de locaties en ouders met elkaar verbindt waardoor slimmer en eenvoudiger gewerkt kan worden. De software wordt in eigen beheer ontwikkeld vanuit Leiden, waar ook de overige onderdelen zoals sales en consultancy gevestigd zijn. Je komt te werken in een team waar resultaat en plezier hand in hand gaan en werkt vanuit een

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Full Stack .NET Developer

Bedrijfsomschrijving Onze klant is een vooraanstaand softwarebedrijf in de regio Amersfoort. Ze leveren oplossingen in de cloud (SaaS) aan meer dan 2 miljoen gebruikers. Dagelijks ondersteunt hun software 2000 klanten door middel van verschillende HR-oplossingen. Dit doen zij samen met 1000 collega’s. Zelf kom jij te werken in een klein, hecht en gedreven team bestaande uit zes collega’s. Samen met dit team zorg jij er onder andere voor dat 2.5 miljoen Nederlanders elke maand op tijd en op de juiste manier hun salaris ontvangen. Als Full Stack .NET Developer werk je samen in een scrum-team aan het verbeteren, uitbreiden, innoveren

Bekijk vacature »

Java / Hippo developer

Functieomschrijving Ben jij een ervaren Java/Hippo ontwikkelaar en op zoek naar een internationale, creatieve en innovatieve omgeving? Wil jij werken in een divers applicatielandschap waar alle aspecten van het vakgebied van een developer aan bod komen, zodat je je volledig kan ontplooien? Bij Randstad Groep Nederland (HQ) zijn we op zoek naar jou! Wij zijn op zoek naar een Java/Hippo ontwikkelaar die per direct ons interne team komt versterken. Java/Hippo development bij Randstad Groep Nederland (HQ) Je komt te werken in het Online Search Experience team. Dit team werkt samen met de product owner aan onze web omgevingen van Randstad

Bekijk vacature »

IT Business Support Analyst

Dümmen Orange is wereldwijd de grootste veredelaar en producent van uitgangsmateriaal voor snijbloemen, bollen, tropische planten, potplanten, perkplanten en vaste planten. Voor onze IT afdeling in de Lier zoeken wij een IT Business Support Analyst. Functie inhoud Dümmen Orange groeit en bloeit! Dit resulteert in een snel veranderende en tevens uitdagende werkomgeving. Dümmen Orange ontwikkelt nieuwe applicaties zoals een Webshop, diverse Mobile Apps en implementeert het CRM systeem Sales Force. Deze applicaties zijn gericht op, en worden gebruikt door onze klanten. Het aantal klanten dat actief gebruik maakt van onze webshop en de mobile apps is sterk groeiende. Als IT

Bekijk vacature »

Fullstack .NET Developer

Bedrijfsomschrijving Over de hele wereld worden er per uur meer dan 50.000 producten per machine geproduceerd door de organisatie waar jij aan de slag gaat. Samen met ruim 300 collega's ben jij mede- verantwoordelijk voor de gehele productiecyclus. Je komt te werken in een dynamische werkomgeving waar een informele, fijne sfeer hangt en hoewel het bedrijf internationaal opereert met deze 300 werknemers zul je werken in een hecht team op het hoofdkantoor in Nederland. Een uniek aspect van de rol als Fullstack .NET Developer bij deze organisatie is jouw end-to-end betrokkenheid op het gehele ontwikkelingsproces. Zo ben je verantwoordelijk voor

Bekijk vacature »

Software Developer - Space unit

We help our customers in their day-to-day operations by processing Space & Earth Observation data using cutting edge IT technologies. If you: • are a software engineer willing to work for a creative group in the Space Business with earth observation and geospatial data, • are eager to learn new big data, machine learning and cloud technologies, • enjoy integrating different components in a wide landscape, • have a passion for clean code and elegant solutions, then, our team is looking for you! Together with our data scientists and IT colleagues, you will have the opportunity to work in projects,

Bekijk vacature »

Front-End Developer Design System

Samen met andere developers en designers bij Coolblue maak jij onze webshop elke dag een beetje beter om zo onze klanten blij te maken. Wat doe je als Front-End Developer Design System bij Coolblue? Bij Coolblue speelt het Design System team een belangrijke rol in het garanderen van de beste klantreis. Het team werkt samen met Designers en Developers om een ​​verzameling tried and true bouwstenen, patronen en richtlijnen op te bouwen. Je werkt aan de gebruiksvriendelijkheid van onze webshop en bent ervan overtuigd dat mooi design voor iedereen toegankelijk moet zijn. Je krijgt energie van het bedenken van creatieve

Bekijk vacature »

Java Software Ontwikkelaar

Heb jij ervaring met applicatieontwikkeling, testen en onderhoud van business-kritische applicaties? Wil je graag het verschil maken voor onze projecten bij de Nederlandse overheid, sociale zekerheid en gezondheidszorg? Wil je deel uitmaken van een zeer succesvol team? Wat ga je doen? De wereld om ons heen verandert in snel tempo. We zien dat technologie een steeds belangrijkere rol speelt in onze samenleving. CGI bouwt innovatieve oplossingen voor deze veranderende wereld. Met jouw team bouw je aan slimme oplossingen voor de digitale overheid, onder andere voor onze opdrachtgevers in de sociale zekerheid en gezondheidszorg. Als ervaren Software Ontwikkelaar houd je je

Bekijk vacature »

C# .NET Developer

Bedrijfsomschrijving Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven. De organisatie heeft ook een adviserende rol, omdat het de klantprocessen raakt en de markt constant in beweging is. Je werkt voor toonaangevende klanten, waaronder o.a. grote financiële dienstverleners, overheidsorganisaties, verzekeringsmaatschappijen en telecombedrijven. De organisatie wordt gekenmerkt als een

Bekijk vacature »

.NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

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

14/05/2021 02:40:31
 
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.