Добрый день!Да числа только натуральные!Язык не обязательно С++,мне как простому юзеру нужно просто открыть прогу,ввести имеющиеся числа и получить результат.
Диапазон от 1 до 99.Да может быть что и нельзя будет подобрать.Это тоже результат.
А если подходит несколько пар,то конечно нужны все результаты.
P.S. Хочу попробовать какой результат будет при вычислении очков в баскетболе,амер футболе.В ручную очень мучительно 100 и больше игр так разложить.
Закономерность)))
Что-то звучит как гадание на кофейной гуще
В ручную на бумажке получается)
В Экселе и аналогах можно сделать с помощью сортировки как-то так:
https://docs.google.com/spreadsheets/d/1YyipOXWfrzQmB1atmA5gDuOGMqcm3Ud2JYz1dkAygic/edit?usp=sharing
Peek 2020-08-25 19-02
Но тут только два числа вручную введенные, не перебор.
Мне тут в других источниках почти сделали))и там 5 нужных вариантов получилось
при имеющихся числах
12 21
18 81
9 90
Получили не хватающие
78 87
23 32
67 76
45 54
21 12
Столько много движений не нужных(((
Спасибо рассмотрю такой вариант.
Что-то не понял как в этой стене чисел результат найти
А, понял, тут подходящих под условие из первого сообщения пар намного больше получается, чем 5.
Видимо не хватает симметричности )
Вот сделал на Питоне. Таких тоже не 5.
import itertools
left_input = [12, 18, 9]
right_input = [21, 81, 90]
for pair in itertools.permutations(range(1, 100), 2):
left = sorted(left_input + [pair[0]], reverse=True)
right = sorted(right_input + [pair[1]])
results = [a + b for a, b in zip(left, right)]
if abs(results[0] - results[1]) == abs(results[2] - results[3]) and str(pair[0]).zfill(2) == str(pair[1]).zfill(2)[::-1]:
print(pair, results)
Можно запустить в любом онлайн интерпретаторе:
https://repl.it/@AlexP11223/WeirdScoreFinder
Спасибо!Попробую.
А мне то что нужно там нажимать?
Все что слева перенести в право?и дальше что то нажать?
А почему программка 3 30 пропустила?
Потому что я не знал какая именно симметричность нужна, 3
был просто 3
, а не 03
)
Исправил.
Да.
А это можно как то скачать?Если у меня инета не будет то все?((
Код скопировать )
Можно себе на комп Python 3 поставить.
Не знаю как проще всего это сделать, я PyCharm использую, но это большая IDE с кучей лишнего, если не страшен cmd, то можно установить как-то так, сохранить код в файл (например, с именем program.py
) и из cmd запустить python3 program.py
.
https://beginpc.ru/windows/komandnaya-stroka
Или вместо cmd открыть файл в стандартном IDLE.
спасибо
Если вдруг не будет интернета, то можешь попробовать такой “калькулятор”
FindPairs.rar (2.1 КБ)
EXE файл - FindPairs_EXE.rar (173.8 КБ)
Исходный код Delphi
procedure TForm1.Button1Click(Sender: TObject);
const N=4;
type arr4 = array[0..N-1] of integer;
{сортировка}
procedure Sort(var A : arr4);
var i,j,t : Integer;
begin
for i:=0 to N-2 do
for j:=i+1 to N-1 do
if A[i]>A[j] then begin
t := A[i]; A[i] := A[j]; A[j] := t
end;
end;
var A0, B0 : array[0..N-2] of integer;
A, B, Res : arr4;
TS : TStringList;
i, cnt, p1, p2 : integer;
S : string;
begin
TS := TStringList.Create;
TS.Delimiter := ',';
TS.DelimitedText := Edit1.Text;
if TS.Count<>(N-1) then begin
Application.MessageBox(
PChar('Внесите три целых числа в первую тройку чисел (внесено '+Format('%d',[TS.Count])+' ) '),
'Ошибка исходных данных', MB_OK or MB_ICONERROR);
TS.Free;
Exit
end;
i:=0;
try
for i := 0 to TS.Count - 1 do A0[i] := StrToInt(TS.Strings[i]);
except
Application.MessageBox(PChar(Format(
'Ошибка! %d-е значение %s не является целым число. Внесите три целых числа в первую тройку чисел ',
[i+1, TS.Strings[i]])),
'Ошибка исходных данных', MB_OK or MB_ICONERROR);
TS.Free;
Exit
end;
// вторая тройка чисел
TS.DelimitedText := Edit2.Text;
if TS.Count<>(N-1) then begin
Application.MessageBox(
PChar('Внесите три целых числа во вторую тройку чисел (внесено '+Format('%d',[TS.Count])+' ) '),
'Ошибка исходных данных', MB_OK or MB_ICONERROR);
TS.Free;
Exit
end;
try
for i := 0 to TS.Count - 1 do B0[i] := StrToInt(TS.Strings[i]);
except
Application.MessageBox(PChar(Format(
'Ошибка! %d-е значение %s не является целым число. Внесите три целых числа во вторую тройку чисел ',
[i+1, TS.Strings[i]])),
'Ошибка исходных данных', MB_OK or MB_ICONERROR);
TS.Free;
Exit
end;
TS.Free;
// вот, собственно, алгоритм
Memo1.Lines.Clear;
cnt := 0;
for p1 := 1 to 100 do
for p2 := 1 to 100 do begin
for i := 0 to N-2 do A[i] := A0[i];
A[N-1] := p1;
Sort( A );
for i := 0 to N-2 do B[i] := B0[i];
B[N-1] := p2;
Sort( B );
for i := 0 to N - 1 do Res[i] := A[i] + B[N-1-i];
if Abs(Res[0]-Res[1]) = Abs(Res[2]-Res[3]) then begin
if Not CheckBox1.Checked or
( ((p1 div 10) = (p2 mod 10)) and ((p2 div 10) = (p1 mod 10))) then begin
Inc(cnt);
S := Format('Пара: %.2u %.2u [ ',[p1,p2]);
for I := 0 to N-1 do S := S + Format('%.2u ',[ Res[i] ]);
S := S +' ] ';
Memo1.Lines.Append(S);
end;
end;
end;
if cnt=0 then Memo1.Lines.Append('Подходящих значений не найдено!');
end;