WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Finde die erste Zahl das nicht im Blacklist vorkommt

 

joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 03.10.2014, 10:52     Titel: Finde die erste Zahl das nicht im Blacklist vorkommt
  Antworten mit Zitat      
Hallo,

ich versuche folgendes Problem elegant zu lösen:

1) suche die erste Zahl großer als startZahl ...
2) das nicht in einem Blacklist vorkommt

Code:
start = 6
blacklist = [2 4 5  7  9 ]


Ergegniss sollte sein ...
start=1 -->3
start=2 -->3
start=3 -->6
start=4 -->6
start=5 -->6
start=6 -->8
start=7 -->8
start=8 -->10
start=9 -->10

Mit einer for Schleife könnte ich es lösen, will diese Lösung aber verhindern.

Danke!

LG
joekey
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2014, 11:48     Titel:
  Antworten mit Zitat      
Hallo,

warum denn ohne Schleife?
Ist die blacklist sortiert?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 03.10.2014, 11:53     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja, blacklist ist sortiert. Ohne Schleife ist elegant Wink und performant Wink

Danke!

LG
joekey
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex4456
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 17.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 15:49     Titel:
  Antworten mit Zitat      
Hallo,
Ich würde nicht behaupten, dass es elegant ist, aber es umgeht die Schleife. Ob es wirklich schnell ist solltest du prüfen. Bin für verbesserungen offen.

Code:
blacklist = [2 4 5  7  9 ];
checklist = [blacklist(1):1:blacklist(end)];
sucheGroesser = start<checklist;
sucheVorhanden = ismember(checklist,blacklist);

check = sucheGroesser == 1 & sucheVorhanden == 0
if sum(check) > 0
    allobj = checklist(check);
    first = allobj(1);
elseif start == blacklist(end)
   first = blacklist(end)+1;
else
    first = start;
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.10.2014, 18:40     Titel: Re: Finde die erste Zahl das nicht im Blacklist vorkommt
  Antworten mit Zitat      
Hallo joekey,

Es gibt hier eine ganz Reihe verschiedener Lösungen. Welche hier am effizientesten ist hängt von der Größe und den Werten der Daten ab. Es macht einen großen Unterschied, ob die blacklist z.B. nur Zahlen von 1 bis 250 enthält, oder auch von 1e8 bis 1e32 gehen kann.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 03.10.2014, 20:34     Titel:
  Antworten mit Zitat      
Hallo Alex, Jan,

@Alex: danke für dein Vorschlag, schue mir es morgen genauer an
@Jan:

1) blacklist beinhaltet 30-50 Werte ...
2) es handelt sich um datenum werte des Datums (z. B. 735236)
3) der abstand zwischen den blacklist Weten beträgt 30-60 Tage

LG
joekey
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.