98641
Goto Top

Zahlengenerator mit Batch

hallo,

weiß nicht mehr weiter
brauche einen generator mit batch der mir jegliche zahlen zusammen stellt
z.B.
ich habe die zahlen 1 2 3 dann soll er mir alle daraus formbaren Zahlen zusammen stellen
in dem fall
111 133 122 132 113 112 131 121 213 222 233 211 231 223 221 232 212 321 333 322
311 321 331 332 323 313 11 12 13 1 2 3 22 23 21 31 32
Vielleicht wisst ihr weiter.

Mit freundlichen Grüßen,
Michi

Content-Key: 164259

Url: https://administrator.de/contentid/164259

Printed on: April 24, 2024 at 06:04 o'clock

Member: Biber
Biber Apr 09, 2011 at 12:36:28 (UTC)
Goto Top
Moin Michi12345,

normalerweise werden zur computergestützten Berechnung von Ergebnissen vier Ressourcen benötigt.
  • einen definierten und beschreibbaren Input und Output
  • eindeutige Verarbeitungsregeln (aka Algorithmus)
  • ein geeignetes Programmierwerkzeug
  • einen geduldigen Handwerker, der mit dem Werkzeug umgehen kann.

Du hast nun eine Aufgabe aus dem Kontext Kombinatorik gewählt oder gestellt bekommen.
Und kommst nun relativ schnell zu dem Schluss "weiß nicht mehr weiter".

Kann es sein, dass du die dritte der vier notwendigen Ressourcen ein bisschen zu flapsig geprüft hast?

Oder anders formuliert:
Rein spekulativ- was glaubst du bringt mehr Treffer bei einer Suchmaschine: die Kombination "Batch+Kombinatorik" oder "FDP+Sachertorte"?

In welchem Kontext und in welcher Form (Tabelle, Bildschirmanzeige, Fliesstext) brauchst du denn den Output und wofür (für welche Folgeverarbeitung)?

Grüße
Biber
Member: rubberman
rubberman Apr 09, 2011 at 12:42:37 (UTC)
Goto Top
Hallo Michi,

ich weiß zwar nicht, warum 1- und 2-stellige Zahlen auch zu den Kombinationsmöglichkeiten gehören sollen, aber so wie du es beschreibst, vielleicht so:
@echo off &setlocal enabledelayedexpansion
for /l %%a in (0,1,3) do (
  for /l %%b in (0,1,3) do (
    for /l %%c in (1,1,3) do (
      for /f "tokens=* delims=0" %%d in ("%%a%%b%%c") do echo %%d|findstr /v "0"  
    )
  )
)
pause
Grüße
rubberman


<edit>Hallo Biber. Mit 3-stelligen Zahlenkombinationen ist ja die Berechnungszeit auch noch überschauber, aber wehe es werden mehr face-wink</edit>
Member: Biber
Biber Apr 09, 2011 at 13:13:30 (UTC)
Goto Top
Moin rubberman,

auch für mich gehören die ein- und zweistelligen Werte nicht dazu.
Bei deinem Schnipsel ist die DelayedExpansion zwar nicht nötig, aber falls die ohnehin aktiv wäre, dann ginge auch dieser Oneliner:
>@for /l %a in (0,1,3) do @for /L %b in (0,1,3) do @for /L %c in (1,1,3) do @set "x=%a%b%c" &@echo !x:0=!
[vom CMD-Prompt aus, führendes ">" gehört zu meinem Prompt]
Ausgabe:
1
2
3
11
12
13
21
22
23
31
32
33
11
12
13
111
112
...
333

Dennoch - die Aufgabe hat alles, was IT ad absurdum führt.
Eine aus dem Kontext gerissene Aufgabenstellung, Input und Output unklar definiert, Algorithmus intransparent, das falsche Werkzeug und keinen Plan, wer das umsetzt.

Aber wahrscheinlich Windows 7 64bit Dolby Surround.

Grüße
Biber
Member: rubberman
rubberman Apr 09, 2011 at 13:57:02 (UTC)
Goto Top
Hallo Biber.

Zitat von @Biber:
Bei deinem Schnipsel ist die DelayedExpansion zwar nicht nötig
Stimmt.
@echo !x:0=!
... erzeugt dafür ein paar Zeichenfolgen zu viel face-wink

Zitat von @Biber:
Dennoch - die Aufgabe hat alles, was IT ad absurdum führt.
Eine aus dem Kontext gerissene Aufgabenstellung, Input und Output unklar definiert, Algorithmus intransparent, das falsche
Werkzeug und keinen Plan, wer das umsetzt.

Aber wahrscheinlich Windows 7 64bit Dolby Surround.

Völlig d'accord.

Grüße
rubberman
Member: Biber
Biber Apr 09, 2011 at 14:55:58 (UTC)
Goto Top
Moin rubberman,

hast recht, bei mir kommt viel zuviel heraus - keine Ahnung, warum ich so lieblos an diese Aufgabe herangegangen bin. face-wink

Dann nochmal vom CMD-Prompt als POC ohne Variablen und ohne DelayedFirlefanz.
>@for /l %a in (1,1,3) do @(echo %a) & @for /L %b in (1,1,3) do @(echo %a%b) & @for /L %c in (1,1,3) do @echo %a%b%c
1
11
111
112
113
12
121
122
123
13
131
132
133
2
21
211
212
213
22
221
222
223
23
231
232
233
3
31
311
312
313
32
321
322
323
33
331
332
333

P.S. Wo ist denn der Michi? Weint der immer noch?

Grüße
Biber
Mitglied: 98641
98641 Apr 09, 2011 at 16:18:05 (UTC)
Goto Top
vielen dank für diese ganzen Antworten
könntet ihr mir eventuell den Syntax dazu noch erklären
Michi
Member: Biber
Biber Apr 09, 2011 at 16:28:22 (UTC)
Goto Top
Zitat von @98641:
vielen dank für diese ganzen Antworten
könntet ihr mir eventuell den Syntax dazu noch erklären
Michi
gern geschehen.
wusstest du, dass es auf einem halben Dutzend Kontinente dieses Planeten als unfein gilt, auf Gegenfragen mit Gegenfragen zu antworten?
Bibi
Mitglied: 98641
98641 Apr 09, 2011 at 16:34:59 (UTC)
Goto Top
sorry das war nicht so gemeint, jedoch hätte ich dann nur für diese frage einen neuen Inhalt erstellen müssen und das würde sich nicht lohnen, dachte ich
Member: Biber
Biber Apr 09, 2011 at 18:50:08 (UTC)
Goto Top
Moin Michi12345,

Zitat von @98641:
sorry das war nicht so gemeint, jedoch hätte ich dann nur für diese frage einen neuen Inhalt erstellen müssen und
das würde sich nicht lohnen, dachte ich
In meinem Freundes- und Bekanntenkreis werde ich oft "Biber der Geduldige" genannt.
Meist aber nur, wenn ich nicht in der Nähe bin, weil ich sehr schnell ausraste, wenn mir jemand ironisch kommt.

Egal, wenn du meine Fragen nicht beantworten willst, dann leg ich noch 'ne Schippe drauf, und zwar glühende Kohlen auf dein Haupt.

Zum Verständnis, was mein proof-of-concept-Oneliner macht, schau dir bitte die FOR/?-Hilfe am CMD-Prompt an.

For/L ist eine Zählschleife, die Zahlen VON-BIS durchnudelt. Vom DurchnudeLn ist das "L" hergeleitet
@for /l %a in (1,1,3) do @(echo %a) & @for /L %b in (1,1,3) do @(echo %a%b) & @for /L %c in (1,1,3) do @echo %a%b%c

Als Batch geschrieben, damit die Struktur erkennbarer wird,und ein bisschen kommentiert sähe es so aus

@echo off && Rem Das @echo off ersetzt die vielen "@" im Oneliner.  
REM In einer ZählschLeife mit Zählvariable %%a VON:1 BIS:3 mit Schrittweite:1 TUE
FOR /L %a in (1,1,3) DO (
     REM zeige aktuellen Zählschleifenwert %%a der FOR-Anweisung
     echo %%a
     REM In einer ZählschLeife mit Zählvariable %%b VON:1 BIS:3 mit Schrittweite:1 TUE
     FOR /L %%b in (1,1,3) DO (
         REM zeige aktuellen Zählschleifenwert %%a und %%b der FOR-Anweisungen
         echo %%a%%b
         REM In einer ZählschLeife mit Zählvariable %%c VON:1 BIS:3 mit Schrittweite:1 TUE
         FOR/L %%c in (1,1,3) DO (
             REM zeige aktuelle Zählschleifenwerte %%a und %%b und %%c  der FOR-Anweisungen  
             echo %%a%%b%%c
         )
         REM Ende der DO -Anweisung FOR mit Variable %%c
    )
    REM Ende der DO -Anweisung FOR mit Variable %%b
)
REM Ende der DO -Anweisung FOR mit Variable %%a
REM Ende des Batches und meiner Geduld.

Grüße
Biber