Под графическими примитивами понимаются минимальные графические объекты, которые составляют векторный рисунок. К графическим примитивам относятся: линии, прямоугольники, окружности, эллипсы, дуги, трёхмерные объекты (куб, шар, цилиндр и т. д.); текст. Из графических примитивов могут быть составлены более сложные объекты при функции комбинирования и логических операций над формами.
Линии и стрелки.
Используется для создания линии. Укажите начальную и конечную точку линии на листе рисунка: начальная точка линии задаётся левой кнопкой мыши; затем, не отпуская кнопку, установите курсор на конечную точку линии и отпустите кнопку — линия создана.
Прямоугольники.
Можно использовать для создания квадрата или прямоугольника. Здесь нужно указать положение двух противоположных вершин фиуры: первую укажите нажатием левой кнопки мыши; затем, не отпуская её, подведите курсор ко второй точке и зафиксируйте фигуру, отпустив кнопку.
Окружности, эллипсы, дуги.
Для создания окружности или эллипса достаточно указать размер примитива двумя точками: первую точку укажите, нажав левую кнопку мыши, не отпуская её, переместите курсор на необходимое расстояние ко второй точке и отпустите кнопку мыши. Окружность или эллипс будут вписаны в прямоугольник, заданный начальной и конечной точками. Чтобы получить дугу, нужно указать ещё две точки на контуре окружности или эллипса, также нажав и отпустив левую кнопку мыши.
Трёхмерные объекты
Чтобы задать трёхмерный объект, необходимо указать его максимальный размер в одном из двух измерений. Трёхмерный объект создаётся в фиксированных пропорциях, которые можно изменить уже после его создания.
open System
let anyNumberSymbol = "?"
let replaceSymbolOnIndex (str:string) (number:int) (index:int) =
String.Format("{0}{1}{2}", str.Substring(0, index), number, str.Substring(index+1))
let rec getAllValues (valueStr:string) =
let index = valueStr.IndexOf(anyNumberSymbol)
if index > -1
then
let newStrings =
[0..9]
|> Seq.map (fun x -> replaceSymbolOnIndex valueStr x index)
newStrings |> Seq.collect (fun x -> getAllValues x)
else
[valueStr] |> List.toSeq
let getResults (numbers:string list) =
List.nth numbers 0
|> getAllValues
|> Seq.map (fun firstNumber ->
List.nth numbers 1
|> getAllValues
|> Seq.map (fun secondNumber ->
List.nth numbers 2
|> getAllValues
|> Seq.map (fun resultNumber ->
if Int32.Parse(firstNumber) + Int32.Parse(secondNumber) = Int32.Parse(resultNumber)
then [String.Format("{0} + {1} = {2}", firstNumber, secondNumber, resultNumber)]
else []
)
|> Seq.collect (fun x -> x)
)
|> Seq.collect (fun x -> x)
)
|> Seq.collect (fun x -> x)
|> Seq.toArray
[<EntryPoint>]
let main argv =
let inputString = System.Console.ReadLine()
let numbers = inputString.Split('+', '=') |> Array.map (fun x -> x.Trim())
if numbers.Length = 3
then
let results = getResults (numbers |> Array.toList)
if results.Length > 0
then Console.WriteLine(results |> Seq.fold (fun result x -> result + "\n" + x) "")
else Console.WriteLine("No results")
Console.ReadKey(true) |> ignore
0
else
1
Под графическими примитивами понимаются минимальные графические объекты, которые составляют векторный рисунок. К графическим примитивам относятся: линии, прямоугольники, окружности, эллипсы, дуги, трёхмерные объекты (куб, шар, цилиндр и т. д.); текст. Из графических примитивов могут быть составлены более сложные объекты при функции комбинирования и логических операций над формами.
Линии и стрелки.
Используется для создания линии. Укажите начальную и конечную точку линии на листе рисунка: начальная точка линии задаётся левой кнопкой мыши; затем, не отпуская кнопку, установите курсор на конечную точку линии и отпустите кнопку — линия создана.
Прямоугольники.
Можно использовать для создания квадрата или прямоугольника. Здесь нужно указать положение двух противоположных вершин фиуры: первую укажите нажатием левой кнопки мыши; затем, не отпуская её, подведите курсор ко второй точке и зафиксируйте фигуру, отпустив кнопку.
Окружности, эллипсы, дуги.
Для создания окружности или эллипса достаточно указать размер примитива двумя точками: первую точку укажите, нажав левую кнопку мыши, не отпуская её, переместите курсор на необходимое расстояние ко второй точке и отпустите кнопку мыши. Окружность или эллипс будут вписаны в прямоугольник, заданный начальной и конечной точками. Чтобы получить дугу, нужно указать ещё две точки на контуре окружности или эллипса, также нажав и отпустив левую кнопку мыши.
Трёхмерные объекты
Чтобы задать трёхмерный объект, необходимо указать его максимальный размер в одном из двух измерений. Трёхмерный объект создаётся в фиксированных пропорциях, которые можно изменить уже после его создания.