EAN-13 corrigeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

.NET Developer Azure

Dit ga je doen Het ontwerpen en bouwen van diverse applicaties (C#, ASP.NET, MVC); Het ontwikkelen van Webservices (WCF); Het meewerken aan de transitie naar Azure; Het samenwerken met collega's binnen een Scrumteam en meedenken over de User Stories; Het bouwen van unittesten; Meedenken over nieuwe tooling, ontwikkelingen en technologieën in de markt. Hier ga je werken Je komt te werken bij een organisatie die verantwoordelijk is voor de ontwikkeling van verschillende portalen. Deze portalen worden gebruikt door diverse partijen en jouw taak is om ervoor te zorgen dat deze optimaal functioneren. Je wordt onderdeel van een Scrumteam en werkt

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Als PHP developer (Symfony) bijdragen aan betere z

Functie Als Medior/Senior PHP developer wordt er een mate van zelfstandigheid verwacht, maar ook dat je goed in een team kunt opereren waar kennis wordt gedeeld en er bijvoorbeeld codereviews plaatsvinden. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden geactualiseerd.

Bekijk vacature »

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Amersfoort gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

Traineeship Fullstack developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Ontwikkelaar Centrale Monitoring

Ontwikkelaar centrale Monitoring Functieomschrijving Wil jij een bijdrage leveren aan het onderhoud, opzetten en ontwikkelingen van technologieën van SSC-ICT, een van de grootste ICT-dienstverleners van en voor de Rijksoverheid? Je komt als monitorspecialist te werken bij team Operations Management Services. Dit team werkt aan het stabiliseren en waarborgen van een betrouwbare monitoromgeving voor 7 ministeries. Jij begeleidt het implementatieproces van de te monitoren technologieën, onder andere via management packs, connectoren en API's. Je hebt hiervoor veel contact met interne en externe klanten, die hun wensen op het gebied van monitoring aan jou doorgeven. Je beoordeelt deze wensen en komt met

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

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

25/04/2024 23:00:27
 
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.