Wyznaczenie wszystkich kombinacji liczby 1379

0

Witam

Czy ma ktoś pomysl jak wyznaczyć wszystkie kombinacje elementów liczby 1379:

chodzi o rozłożenie na:

1,3,7,9,13,17,19,31,37,39,71,73,79,91,93,97,137,139,173,179,191,197,317,319,371,379,391,397,713,719,731,739,791,793,913,917,931,937,971,973 itd... z tym że każda liczba w danej kombinacji może być uzyta tylko raz.

Kombinuję z pętlami ale zaraz sie sam przekrece...

Będę wdzieczny za pomoc

Pozdrawiam

0

Ach tak, sezon zaliczeń w pełni, pewnie jeszcze miałeś w treści żeby sprawdzić czy jest liczbą pierwszą i pobrać zestaw liczb od usera.
Już dostalem pytanie o podobne zadanie. Zresztą był mój temat w dziale Newbie, ale po co szukać i czytać inne posty. Zrobcie to za
mnie, bo muszę na jutro oddać, a nauczyciel czy wykładowca nic nigdy nie tłumaczył? Mam rację? Masz, bo miałem gotowy ten kod
wcześniej także tylko wystarczy wkleić. Ale ludzie czy Wy nie możecie pomyśleć samodzielnie. A co jak kiedyś nie było Internetu i z
zaliczeniami sobie ludzie jakoś musieli radzić, "komórki" też nie były powszechne, a jakoś ludzie to musieli zrobić i w miarę szybko.

program combo_number;

{$APPTYPE CONSOLE}

function IntToStr(I : Longint) : string;
var
  S : string[11];
begin
  Str(I, S);
  IntToStr := S;
end;

function IsUniqueNumber(ANumber : integer; ASet : string) : boolean;
var
  DigitStr : string;
  I, X, Cnt : integer;
begin
  Cnt := 0;
  DigitStr := IntToStr(ANumber);
  for I := 1 to Length(DigitStr) do
  begin
    X := Pos(DigitStr[I], ASet);
    if X > 0 then
    begin
      Cnt := Cnt + 1;
      Delete(ASet, X, 1);
    end;
  end;
  IsUniqueNumber := Cnt = Length(DigitStr);
end;

var
  I : integer;
begin
  for I := 1 to 9999 do
  begin
    if IsUniqueNumber(I, '1379') = True then
    begin
      Writeln('  ', I);
    end;
  end;
  Readln;
end.

Kod zadziała takze w jakimkolwiek Pascalu. A Ty i tak się nic nie nauczysz, po co więc wybrałeś uczelnie z programowaniem ;/

0
olesio napisał(a)

Zresztą był mój temat w dziale Newbie, ale po co szukać i czytać inne posty. Zrobcie to za
mnie, bo muszę na jutro oddać, a nauczyciel czy wykładowca nic nigdy nie tłumaczył? Mam rację? Masz, bo miałem gotowy ten kod
wcześniej także tylko wystarczy wkleić. Ale ludzie czy Wy nie możecie pomyśleć samodzielnie. A co jak kiedyś nie było Internetu i z
zaliczeniami sobie ludzie jakoś musieli radzić, "komórki" też nie były powszechne, a jakoś ludzie to musieli zrobić i w miarę szybko.

denerwujesz sie na niech ale i tak podajesz kod na tacy i ten czlowiek kiedys wroci.. no bo warto przeciez.
co do kodu, powiem tylko ze nie podoba mi sie uzywanie begin..end tam gdzie nie jest to potrzebne, o:

  for I := 1 to 9999 do
    if IsUniqueNumber(I, '1379')
        then Writeln('  ', I);
0

No to niech będzie, że pomagam przedostatni raz. A wiem, że Opi nie lubi znaku < lub <
do pary ze znaiem równości w ifach, ale dlaczego używam prawie zawsze (bo czasami to
tak nie robię, tutaj akurat zrobilem, coż ;/) if ... then ... begin ... end; już kiedyś chyba
tutaj napisałem. Po prostu przy dodaniu dodatkowego kodu wiecej niż jedną linijkę to nie
muszę przeformatować bloku, tak samo z else, nie lubie dawać enda bez średnika itd, no
ale na działanie programu to nie wpływa. Mi się wydaję, że jest to przejrzyste i jakoś do
zaakceptowania. Być może kiedyś zmienię zdanie, bo z ponad 2 lata temu miałem manię
aby w ogóle kodu nie formatować, teraz jak widzę taki kod to mnie skręca. I fakt jestem
może konserwatywny, ale z czasem przestawiam się na lepsze przyzwyczajenia. Chociaż
tutaj wiadomo, pytającemu chodzilo o gotowiec za darmo (jak zwykle), to dostał taki, z
moimi zlymi nawykami, a może jak wklei to leniwie i odda w takiej postaci to nie zda ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1