Распечатать первый символ предыдущих ответов

17

Принятым победителем является isaacg с его 7-битным ответом ASCII . Однако задача еще не закончена - эта награда присуждается за самый короткий ответ. Если каким-то образом вы соберете все первые символы всех остальных ответов в 10 байтов, вы получите награду. Сюда входят все персонажи из ответа на GolfScript раунда 2 (плюс тот, который добавлен самим ответом). Это ОДИН раз, когда я позволю вам выйти из строя - если у вас есть какие-либо возражения по этому поводу, дайте мне знать в комментариях.

Я хотел бы отдать должное рандоме, который помог мне с моей старой идеей и дал мне эту новую.

Предыдущие победители

  • Раунд 1: isaacg, с 7-битным ASCII.
    Next bytes: 30 (or 10 if you want that sweet, sweet rep)
    Вы знаете, игра в код - это действительно здорово. Люди принимают вызов, и он постепенно становится меньше! Но давайте сделаем это по-другому. Итак, вот мой вызов:

  • Код напечатает первый символ всех предыдущих ответов в том порядке, в котором они были опубликованы (первый ответ ничего не печатает)

  • Код начинается с 100 байтов и уменьшается на 5 каждый раз.
  • Если два сообщения идут по одному и тому же ответу (то есть они оба публикуются в течение нескольких секунд друг от друга), более новый должен добавить старый символ и уменьшить его на 5 байтов (даже на несколько секунд).
  • Любой язык может быть использован.
  • Ваш код не должен давать никаких ошибок.
  • Ваш код должен использовать все байты, необходимые для первого шага.
  • Ваш код должен распечатать на STDOUT.
  • Непечатаемые символы в порядке, но:
    • Они не могут быть первым персонажем (ради цели этого вопроса)
    • Вы должны сообщить всем, где они
  • Вы можете опубликовать несколько ответов, но:
    • Вы должны подождать 2 ответа, прежде чем отправлять другой (поэтому, если вы разместили 100 байтов, вам придется подождать до 85 байтов.)
  • Вы не можете:
    • использовать более 10 байтов комментариев
    • есть переменные, которые остаются неиспользованными для всей программы
    • заполнить программу пробелами
    • иметь имена переменных длиннее 10 байт (но вы можете иметь несколько переменных
      размером менее 10 байт) (первый ответ EMBLEM является исключением из этих правил, поскольку он был опубликован до этих ограничений).
  • Нет стандартных лазеек. Если вы не хотите взять все удовольствие от испытания.
  • Если в течение 3 недель не отправляется больше ответов, выигрывает ответ, использующий наименьшее количество байтов. (В случае ничьей выигрывает тот, кто печатает более длинную строку.)

Пример: третий ответ должен состоять из 90-байтового кода, выводящего два символа (первый символ 100-байтового кода, а затем первый символ 95-байтового кода). Первый ответ ничего не выводит (без предыдущих ответов, чтобы получить символы).

ASCIIThenANSI
источник
«Ненужный пробел» - плохая формулировка. Пробелы в Python для завершения операторов не нужны, потому что вы можете использовать точки с запятой.
ЭМБЛЕМА
8
Возможно, мы можем начать с 100 байтов снова, но начинать с ppuppPq([#fwSmdP[начальной строки и перезапускать каждый раз, когда строка длиннее разрешенного байтом. Хотя тогда я не могу придумать критерий победы.
Sanchises
1
@Scimonster Вы честно думаете, что есть 4-битный набор символов, который включает в себя все #(PS[dfmpquw? Здесь мы сталкиваемся с самыми ограничениями плотности информации. Если вы не пишете 10-байтовую программу, которая обрабатывает все предыдущие ответы. Не уверен, стоит ли ждать.
Sanchises
2
@ Санчиз Мы не говорим, что есть один. Мы даем людям шанс увидеть, что они могут сделать. Если никто не может, мы перезапустим его.
ASCIIThenANSI
6
-1 Почему этот вызов не умер достойно после 15-байтового решения? Кажется неуместным менять его после того, как был получен хороший, «выигрышный» ответ, чтобы вы могли продолжать играть по другим правилам.
Geobits

Ответы:

34

7-битный ASCII, 15 байтов

Обновлено: я не понял, что заполнение должно произойти в конце.

Правильная версия, дополненная в конце:

hexdump (xxd):

0000000: e1c3 af0e 1438 a8b6 8f37 7a7b 7250 b6    .....8...7z{rP.

Распечатки (не уверен, что это правильно):

�ï8��z{rP�

áï8¨¶7z{rP¶

Старая версия, неправильно дополненная спереди:

pá×
T[G½=¹([

Язык / формат здесь 7-битный ascii, где каждая группа из 7 битов соответствует символу ASCII. Используется при передаче данных SMS. Декодер находится здесь.

Не существует общепринятого решения о том, разрешены ли ответы на фиксированные выходные вопросы, которые не написаны на языке программирования. Смотрите эту мета пост для получения дополнительной информации. (Я извиняюсь, я неправильно прочитал этот пост ранее.)

isaacg
источник
2
Поздравляем! Вы единственный, кого я видел, чтобы сжать строку длиннее, чем код, в который она включена! : D
ASCIIThenANSI
@ASCIIThenANSI Сжать строку в более короткую программу легко. Программа Python print('A'*100)печатает строку из 100 A-х. Сжатие фактически случайной строки не легко.
Увлечения Кэлвина
6
@ Calvin'sHobbies Это было бы проще, если бы мы все только начали весь наш код с буквы «p». : D
ASCIIThenANSI
4
-1 Я должен был посмотреть на это раньше ... Кажется, это неправильно закодировано. Похоже, вы начинаете с небольшого дополнения, но из того, что я могу сказать по формату (и этот ответ уже расширяет определение формата, поскольку упакованный 7-битный ASCII фактически нигде не используется), данные должны быть дополненным в конце, а не в начале. И даже с отступом, я думаю, что остальное не закодировано правильно.
Runer112
1
Это должно быть " <SO><DC4>¨¶Ã¯8¨¶7z {rP¶".
LegionMammal978
25

Элемент, 80 байт

programs do many fun things, like print the letters p`, p`, u`, and p` in a row.

Это язык, который я создал более трех лет назад. Вы можете найти переводчика, написанного на Perl, здесь . `Оператор печатает верхнюю вещь на стеке (буквы). Другая пунктуация делает что-то вроде конкатенации, но результаты никогда не печатаются.

PhiNotPi
источник
1
Очень умно, сэр. Очень умно ...
ASCIIThenANSI
10

Клип , 20 байт

[M"ppuppPq([#fwSmdP"
bcsb1001
источник
6
Я думаю, что ты последний на ногах. Если кто-то не может сжать ppuppPq([#fwSmdP[в 15 байтов и вывести его.
Sanchises
@sanchises Если кто-нибудь сделает, я бы присудил награду. Потому что это было бы хорошо.
ASCIIThenANSI
3
@sanchises Если бы был какой-то эзотерический язык, который выводил программу со всеми вхождениями, pзамененными на pp. Тогда решение будет pupPq([#fwSmdP[.
bcsb1001
1
@ bcsb1001 Да, недавно я подумал о чем-то подобном; эзотерический язык, где каждая команда является выигрышным решением задач на этом сайте и использует выходные данные этой команды в качестве входных данных для следующей команды. Было бы здорово, если бы кто-нибудь мог запрограммировать что-нибудь в этом.
Sanchises
1
@sanchises Но нарушит ли это стандартное правило лазейки, выйдя в интернет?
ASCIIThenANSI
5

Common Lisp, 65 байт

(print(map 'string #' code-char #(112 112 117 112 #x70 80 #x71)))
Geobits
источник
Последние 112 должны быть изменены на 80 (как-то).
LegionMammal978
12
С этим ответом началась эра тьмы.
PhiNotPi
4

Python 3, 95 байт

pre='public class f{public static void main(String[] a){System.out.print("");}}'
print(pre[0])
isaacg
источник
4

Haskell, 35 байт

main = putStrLn "\&ppuppPq([#fwS\&"
user19057
источник
Что делает "\ &"?
Хюлле
4
@Hjulle Возьми двух персонажей. (Это код
перехода
4

Прошло 24 часа с момента редактирования! Давай сделаем это! : D

Java, раунд 2, 100 байт

public class Bytes{public static void main(String[] args){System.out.print("ppuppPq([#fwSmdP[p");}}
ЭМБЛЕМА
источник
1
Как насчет маркировки этого «Раунда 2»?
Клаудиу
4

Раунд 2: Рубин, 75 байтов

"ppuppPq([#fwSmdP[ppnvos".chars.each do|character|;print character;end#4444

Я думал, что сделаю это немного сложнее, начав свой ответ с цитаты! >: D

ЭМБЛЕМА
источник
3

Java, 100 байт

public class f{public static void main(String[] a){System.out.print("");}}//createdbyEMBLEMasdfghjkl
ЭМБЛЕМА
источник
3

Mathematica, 75 байт

Print[StringJoin[First/@Characters/@{"publ","pre=","usin","p1 =","prog"}]];
LegionMammal978
источник
3

F #, 60 байтов

[<EntryPoint>]let main arg=System.Console.Write "ppuppPq(";0
LegionMammal978
источник
3

F # скрипт, 40 байт

System.Console.Write "\u0070puppPq([#fw"

Он имеет свой собственный тип файла ( .fsx), поэтому я уверен, что он считается языком.

LegionMammal978
источник
1
Вы забыли "W" с нуля.
ASCIIThenANSI
Я думаю, что это также не хватает 'F' из 50-байтового ответа JavaScript.
user19057
Исправлено это тоже
LegionMammal978
3

Раунд 2: /// , 65 байт

\p/CodeGolfIsAwesome!/puppPq/CodeGolfIsAwesome!([#fwSmdP[ppnvos"R

Думал, я бы немного оживил это с помощью обратной косой черты :)

rodolphito
источник
2

C #, 90 байт

using System;namespace IAmAwesome{class Program{static void Main(){Console.Write("pp");}}}
LegionMammal978
источник
2

Рубин, 70 байт

q = ["publ", "pre", "usi", "p1 ", "pro", "Pri"]
q.each{|s| print s[0]}
ЭМБЛЕМА
источник
Вы должны были бы изменить это ["publ", "pre", "usi", "p1 ", "pro", "Pri"].
LegionMammal978
2

C 55 байт

#include<stdio.h>
int main(){return puts("ppuppPq([");}
user19057
источник
Это должно быть изменено на "ppuppPq([".
LegionMammal978
@ LegionMammal978 Спасибо, исправлено.
user19057
2

JavaScript, 50 байт

function foo() {console.log("ppuppPq([#");}
foo();
ЭМБЛЕМА
источник
Это должно бытьppupPq([#
ASCIIThenANSI
3
@ASCIIThenANSI Я так не думаю.
Scimonster
2

MATLAB, 30 байтов

disp([112 112 'uppPq([#fwSm'])

Прекрасно показывает, насколько свободна MATLAB с типами данных.

Sanchises
источник
2

Mathematica, 25 байт

Print["ppuppPq([#fwSmd"];
LegionMammal978
источник
1
У меня было новое 25-байтовое решение CJam, которое кодировало строку не простым способом. К сожалению, похоже, что он никогда не увидит свет. : - /
Runer112
@ Runer112 Ты и все твои маленькие рифмы / Тем не менее, у меня был ответ примерно за 20 секунд до того, как прозвенел 30-байтовый.
LegionMammal978
2

Раунд 2: Пакет, 70 байт

REM BATCHS
GOTO B
:C
ECHO ppuppPq([#fwSmdP[ppnvos"
GOTO A
:B
GOTO C
:A

Ваша цитата была бесполезной. D:>

Редактировать: мне просто пришло в голову, что я иду по размеру файла, а не по количеству символов, не зная, как считать байты: P

Редактировать 2: Добавлен комментарий для заполнения байтов. Если вы проверите количество байтов на машине с Windows, просто притворитесь, что «REM BATCHS» - это просто «REM», я думаю. :П

Bloo
источник
Я считаю байты с Gedit; он говорит, что ваш ответ 63. Не беспокойтесь; Вы достаточно близко, чтобы заполнить пробел с комментариями.
ЭМБЛЕМА
1
Ах, хорошо, круто, я просто добавлю комментарий.
Bloo
3
@EMBLEM Это потому, что новая строка Windows \r\n. Там есть 7 дополнительных \rс.
jimmy23013
2

Раунд 2, Mathematica, 40 байтов

Print@"ppuppPq([#fwSmdP[ppnvos\"R\\v(c'"

Yay вторая страница!

LegionMammal978
источник
Не пропущен ли вывод c?
plannapus
1
@plannapus Это было исправлено
LegionMammal978
2

Раунд 2, > <> , 45 байтов

4 символа комментариев.

'c(v\R"sovnpp[PdmSwf#[(qPppupp'01.uwyz
ol?!;

Строка теперь содержит и то "и другое ', поэтому> <> ответы больше не могут просто окружать ее (так я избегал любых побегов).

bcsb1001
источник
2

Раунд 2, Golfscript, 35 байт

"ppuppPq([#fwSmdP[ppnvos\"R\\v(c'P"

Нет ненужных байтов. Начинается с цитаты снова!

Клаудиу
источник
7-битный ASCII здесь не работает, он создает только 28 байтов и включает дополнительный NUL
LegionMammal978,
Кто-то умнее, чем мне придется это сделать .. может быть, есть какой-то язык, закодированный в 6 битах, который можно запустить для получения правильного вывода ..
Claudiu
Нет, 6 битов создали бы 24 байта, но нам нужно 30.
LegionMammal978
@ LegionMammal978: Хорошо, 24 байта, затем 8 шестибитных инструкций, чтобы напечатать их или сделать что-либо еще
Claudiu
1
Вы пропускаете апостроф из 2 ответов назад
14mRh4X0r
1

Python 3, 85 байт

p1 = 'publ'
p2 = 'pre'
p3 = 'usi'
def cprint():
  print(p1[0], p2[0], p3[0])
cprint()
ASCIIThenANSI
источник
1

Раунд 2, C #, 95 байтов

namespace Cool{class Program{static void Main(){System.Console.Write("ppuppPq([#fwSmdP[pp");}}}
LegionMammal978
источник
Как насчет маркировки этого «Раунда 2»?
Клаудиу
1

Раунд 2, скрипт F #, 55 байт

(**)System.Console.Write(@"uppPq([#fwSmdP[ppnvos""R\v")

Смотрите мой предыдущий сценарий F # и узнайте, почему я думаю, что это правильный язык.

LegionMammal978
источник
1

Раунд 2, R, 50 байтов

cat('ppuppPq([#fwSmdP[ppnvos\"R\\v(',file=stdout())
plannapus
источник
1

Раунд 2, Javascript, 60 байтов

var _p = "p"; alert (_p.repeat (2) + "uppPq ([# fwSmdP [ppnvos \" R \\ ");
SuperJedi224
источник
Я думаю, что ваш __попадет под ненужные переменные. Попробуйте изменить pдвухбуквенное имя и сделайте строку в двойных кавычках, чтобы добавить обратную косую черту для печатной цитаты. Это должно компенсировать 3 символа, которые вы потеряли при удалении __,.
LegionMammal978
1
Они не сказали, чтобы не использовать их. Они сказали использовать не более десяти байтов.
SuperJedi224
Это означало, что вы можете использовать необходимые переменные размером до 10 байтов, но вы не можете использовать ненужные переменные в целом.
LegionMammal978
@Rainbolt Вы интерпретируете это как «Вы не можете использовать более 10 байтов (комментарии), (ненужные переменные), (заполнение программы пробелами) или (имена переменных) длиннее 10 байтов», но из-за вторая ссылка, я вижу это как «Вы не можете использовать (более 10 байтов комментариев), (ненужные переменные), (заполнение программы пробелами) или (имена переменных длиннее 10 байтов)».
LegionMammal978
Я исправил неоднозначность. В вопросе var __не разрешено (не используется в остальной части программы), но переименование pбудет приемлемым.
ASCIIThenANSI
1

Раунд 2: Javascript, 90 байт

var p = "p"; alert (p + p + p + "u" + p + p + p.toUpperCase () + "q ([# fwSmd" + p.toUpperCase () + "[" + p + p + " п "); // р
SuperJedi224
источник
Как насчет маркировки этого «Раунда 2»?
Клаудиу
Это __,подпадает под ненужные переменные .
LegionMammal978