Уравновешивание
обзор
Учитывая ввод 3 однозначных положительных целых чисел, представляющих набор весов, выведите ASCII-представление качелей с весами, размещенными на нем, чтобы они находились в равновесии вокруг центральной оси, принимая во внимание эффекты рычага.
Каждое число имеет вес, равный его значению. Крутящий момент каждого числа - это вес, умноженный на расстояние от центра в символах. Чтобы качели находились в равновесии, суммарный крутящий момент весов слева от качелей должен быть равен крутящему моменту справа, вот так .
вход
3 целых числа в диапазоне 1-9. Вы можете ввести целые числа, как это удобно, например, кортеж, 3 значения, разделенные запятыми и т. Д. Однако ваша программа должна быть способна обрабатывать ввод чисел в любом порядке (т. Е. Не предполагать, что значения будут отсортированы). Можно ввести повторяющиеся числа (например, 2,3,2).
Входные данные всегда математически допускают допустимый выходной сигнал, в противном случае входные данные являются недействительными.
Выход
Выходными данными должны быть 2-строчные ASCII-представления качелей с размещенными на них весами. В первой строке находятся цифры, разнесенные для того, чтобы уравновесить их на качелях.
Числа нельзя размещать в самом центре шкалы, где расстояние и, следовательно, крутящий момент будут равны нулю. Допустимые расстояния от центра колеблются от 1 до 10 символов включительно слева или справа от оси.
В пробелах, не занятых числами, находятся 18 символов подчеркивания (центральное подчеркивание и 10 на каждой стороне, минус 3 позиции, занятые числами). В последней строке находится одиночный символ каретки, выровненный по центру шкалы, представляющий ось.
Примеры
Входные данные:
4,7,2
Выход:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
Числа могут быть выведены с любой стороны, например, это также будет допустимо:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
Числа могут быть размещены в любом месте шкалы, пока они уравновешиваются, например:
Входные данные:
3,1,5
Выход:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
или
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
или
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
так далее
Ваша программа должна выводить только один из допустимых выходов. Не нужно выводить ошибку, если ввод неверен.
Заметки
- Это код-гольф, поэтому выигрывает самая короткая программа в байтах
- Программа может быть автономной или функцией, которая принимает числа в качестве входных данных и возвращает строку.
- Трейлинг новой строки и пробела на последней строке не является обязательным
- Если вы не знаете, что такое качели , это также называется качели или качели.
Ответы:
CJam,
403938 байтПопробуйте онлайн.
Как это работает
источник
CJam,
4644 байтаПроверьте это здесь.
объяснение
Во-первых, наблюдение: нам никогда не нужно ставить две цифры на концах качелей. Всякий раз, когда это правильное решение, есть по крайней мере одно другое правильное решение (согласно вставке в комментарии к вызову).
источник
Ява,
519414321 байтМоя первая попытка игры в гольф.
Вы можете позвонить с помощью
f(a,b,c)
. Попробуй здесьРЕДАКТИРОВАТЬ: Используется излин метод проверки
(a*i+b*j+c*k)==0
РЕДАКТИРОВАТЬ: Спасибо, J Аткин за предложения по игре в гольф.
источник
p
наObject a
и используя ее вместо двух другихSystem.out.print(ln)
.a
как используется только один раз, вы можете включить его.Pyth,
67585349 байтовЭто кажется немного большим для Pyth, но я не достаточно знаком с языком, чтобы иметь возможность сделать это намного меньше.Саб 50 байтов, я наконец то этим доволен!Например, ввод ожидается как массив целых чисел
[1,2,3]
. Попробуй это здесь.Explaination:
И, наконец, некоторые примеры входов и выходов:
источник
C -
237228 байтВы можете позвонить с помощью
f(a,b,c)
.Попробуй это здесь .
Пример выходов:
источник
Python 2.7
235226219 байтТестирование с некоторыми основными примерами
(1,1,1),(1,2,1),(3,1,5),(4,7,2)
приводит к следующим результатам:Выходы для всех возможных входов вставлены сюда
источник
"".join(l) -> 'l'[2::5]
на один байт короче (замените кавычки обратными чертами).repr
. :)PHP, 278 байт
Решение грубой силы, которое использует кучу вложенных циклов и пару тестов.
Как всегда, поместите его в файл (назовем его
seesaw.php
), соедините строки (разделите здесь для удобства чтения), поместите маркер PHP (<?php
) в начале файла (технически это не является частью программы), и вы ' хорошо идти.Пример исполнения:
Он генерирует и отображает все решения (без отражений), но не удаляет дубликаты (когда входные значения содержат дубликаты).
источник
Юлия, 154 байта
Ungolfed + объяснение:
источник
С, 252 (214) байтов
Вызовите с аргументами a, b, c в командной строке.
Если main может быть опущен, количество байтов для функции уменьшается до 214.
Оба используют одинаковую стратегию размещения первого веса слева, затем сканирования вдоль возможных вторых положений веса и расчета третьего веса. Это позволяет удалить внутренний цикл.
источник