Сховати голку в копиці сіна (копи)


38

Це частина виклику . Ідіть сюди за грабіжниками.

Виклик копів

Ви повинні написати програму або функцію на обраній вами мові, яка виводить рядок Haystack. Однак повинно бути можливість видалити деяку підмножину символів із вашої програми (не упорядковуючи решту), так що результуюча рядок також є дійсною програмою на тій же мові, яка друкує Needleзамість цього. Обидві програми / функції необов'язково можуть надрукувати один зворотний рядок (незалежно один від одного), але нічого іншого. Вихідні дані залежать від регістру і повинні відповідати точному корпусу.

Ваша мета, звичайно, дуже добре сховати «голку». Але зауважте, що ваше подання може зламати будь-яке дійсне рішення, а не лише те, що ви задумали.

Будь ласка, включіть у свою відповідь:

  • Мова (та версія, якщо вона доречна) вашої заявки.
  • Розмір програми сіна в байтах.
  • Сама програма сіна.
  • Метод виводу, якщо він не є STDOUT.
  • Якщо можливо, посилання на онлайн-перекладача / упорядника для обраної вами мови.

Ваше повідомлення може бути або програмою, або функцією, але не фрагментом, і ви не повинні приймати середовище REPL. Ви не повинні приймати жодного вводу, і ви можете виводити через STDOUT, значення повернення функції або параметр функції (out).

Обидві програми / функції повинні виконатись протягом 5 секунд на розумному настільному верстаті і потребують детермінованості. Ви не повинні використовувати вбудовані модулі для хешування, шифрування чи генерації випадкових чисел (навіть якщо ви встановите генератор випадкових чисел до фіксованого значення).

В інтересах справедливості має бути вільно доступний перекладач або упорядник для обраної вами мови.

Якщо буде знайдена програма Needle, відповідь зламається. Якщо ваша відповідь не була взломана 7 днів, ви можете виявити у своїй відповіді передбачувану програму Needle, яка зробить ваше подання безпечним. Поки ви не розкриєте своє рішення, воно може все-таки зламатись грабіжниками, навіть якщо 7 днів вже минуло. Виграє найкоротша безпечна програма з сіна (вимірюється в байтах).

Приклади

Ось кілька простих прикладів на різних мовах:

Ruby

Haystack: puts 1>0?"Haystack":"Needle"
Delete:        XXXXXXXXXXXXXXX
Needle:   puts "Needle"

Python 2

Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete:          XXXXXXXX        XX
Needle:   print "eldeeN"[::-1]

Зауважте, що підмножина видалених символів не повинна бути суміжною.

Невикористані подання

<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>


1
Пов'язані. (Основна відмінність полягає в тому, що програма мала реалізовувати послідовності OEIS і дозволяла тріщинованій програмі виводити будь-яку іншу послідовність OEIS, що робить поліцейським набагато складніше захищати від ненавмисних тріщин. Це також дозволяло грабіжникам красти тріщини у інших розбійники, знаходячи ще коротші рішення.)
Мартін Ендер

Я б це зробив у стозі сіна, але у нього немає документації, і я переглядаю код :(
Okx


1
Фрагмент стека неправильно відповідає цій відповіді
mbomb007

1
@ kamoroso94 Так, але це означає, що ви можете скасувати програми-кандидати через 5 або 6 секунд, тому що якщо вони не закінчилися, вони не можуть бути рішенням, яке ви шукаєте.
Мартін Ендер

Відповіді:


16

Стог сіна , 84 байти, потрісканий

0\\1-c\
//    
?10F17+c8F+4+cd8F+3+c6-c1+c,c2+c8+c|
 0   \1++c,c|
F/c++2F8
c\8F+2+cd

Спробуйте в Інтернеті!

Це виглядає (на мене) досить складно, але якщо ви знайдете потрібний підмножина, це занадто просто ... о добре, просто для початку: P



1
@icrieverytim 1. oo круто, вони обидва однокольорові гліфи 2. поточний більш науково точний
HyperNeutrino

1. Так, я знаю, вони виглядають дуже здорово. : PI знайшов їх у цій золотій шахті блоку Unicode . Не дивуйтеся, якщо вони опиняться на кодовій сторінці Неона. 2. TBH, старий виглядав краще ІМО. : P
totalhuman

1
@HyperNeutrino Чому у вас є інтерес до бензолу?
Міхтан

3
@Michthan Враховуючи, що я нейтрино, це гарне питання, але я не знаю: P
HyperNeutrino

12

Шестикутник , 37 байт

H[@;(...e<l.a;./$.>;\sN;\ac.>).;;;._y

Спробуйте в Інтернеті!

Просто мій обов'язковий вступ до шестикутника ...

Для зручності тут розкритий код:

   H [ @ ;
  ( . . . e
 < l . a ; . 
/ $ . > ; \ s
 N ; \ a c .
  > ) . ; ;
   ; . _ y

Як це працює:

Програма починається з H, потім ми переходимо до IP №5. Цей IP починається у західному куті, підстрибуючи та загортаючись під час виконання (фактично) ;a;y;s;(так ми друкували Hays). Потім sвід нього бере зріст до tшляху )і роздруковано, то ми проходимо через Ne...(cдоходячи до a;c;(все ще підстрибуючи невелику ділянку шестикутника). Програма хітів _, відображає через \до lякої отримує декрементируется до kшляху (, який проходить через інший \перед друком і програма закінчується на @.

Докладна версія


3
Ця мова все ще мене тріщить. Я люблю тебе за це.
phroureo

Моє мозок зараз вибухає. Я намагався розібратися в цьому досить, щоб зламати код, але ТАК людина. Який кручений хлопець це вигадує ??
фроурео

@phroureo ...> _>
Мартін Ендер

Після того, як ваша відповідь буде безпечною, чи можете ви мені покроково розповісти, що вона робить? (Або якщо у вас вже є крок за кроком десь щось подібне, вкажіть мене туди?)
phroureo

1
@phroureo Я не проти додати пояснення програми поліцейських, перш ніж це буде безпечно, і я не думаю, що я все-таки вважатиму це безпечним (я не надто прагну виграти власний виклик із поданням, яке я ледве поставив будь-які зусилля в). Я спробую додати пояснення завтра. Тим часом я радий допомогти вам із шестикутниками у чаті езоланг .
Мартін Ендер

10

Мозок-Флак , 146 байт ( тріщинами )

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})

Спробуйте в Інтернеті!

Розраховане рішення, 80 байт

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})
( ((   )(                  [(  (( (         )()()){})) []]   ({}(  )    ( (  ( ()(({}){}){}){}){}())))            ))    (((()[]){}){({}[()  ])}{})


8

JavaScript, 95 байт (ES6), тріщини

Функція, що повертає рядок.

f=(k=b=x=35)=>x--?f(k*74837258394056219&268435455):k&2?'N'+(k^124038877).toString(b):'Haystack'

Демонстрація "Стоги сіна"


Дуже приємна головоломка. Тріщини
ShreevatsaR

8

Haskell , 168 байт ( тріщить німі )

hays=map;hay=zipWith;stack=head;h=stack{-
 hay.(hays.(stackany hay$or id).stack hay
<*>hays(sum$stack haystack<$>hay))-}$words
 "Haystack Hayst ackH aysta ckH aystac k"

Спробуйте в Інтернеті! Оцінюючи ідентифікатор hповертає рядок "Haystack", після деяких вилучень hвиходів "Needle".


1
Тріснув . Було досить весело вирішити.
німі


4

Шестикутник , 32 байти. Тріснув

Я не міг вирішити Мартіна , тому я розміщую свою.

];N.@cl;e@;;(\H/;ya;_.>s.;t//<._

Спробуйте в Інтернеті!

Тут він відформатований:

   ] ; N .
  @ c l ; e
 @ ; ; ( \ H
/ ; y a ; _ .
 > s . ; t /
  / < . _ .
   . . . .

Моя мета полягала в тому, щоб обидва рішення використовувати якомога більше IP-адрес, я отримав 6 для Needle і лише 5 для Haystack .




3

Java (OpenJDK 8) , 226 217 байт ( Зламаний )

Перший коли-небудь гольф коду, мабуть, дуже простий, але це було цікаве завдання!

String d(){int h=3609000-5055+911,m=557558,s=15441301-157*10000;String d="0"+h*2+""+m*20+""+s*7,x="",y;for(int g=0;g<d.length();g+=3){y="";for(int e=0;e<3;e++)y+=d.charAt(e+g);x+=(char)Integer.parseInt(y);}return x;}

Спробуйте в Інтернеті!


Ваш TIO не працює. Ви можете змінити return new Main().d();наSystem.out.print(new Main().d()); в головній-методі.
Kevin Cruijssen

@KevinCruijssen Дякую за голову!
Люк Стівенс



2

JavaScript, 119 байт (ES6), тріщини

Функція, що повертає рядок. Досить довгий і не такий важкий, але, сподіваємось, веселий.

_=>(+{}+['H'])[+[3]]+(+[][[]]+[])[+!!3]+(+[][[]]+['y'])[3]+(+[][[]]+['s'])[-~2]+(~![]+['t'])[2]+(+[][[]]+[])[+!!3]+'ck'

Демонстрація "Стоги сіна"


Тріснув . Jsfuck github README.md дуже допоміг.
моє займенник monicareinstate

2

Python 2.7.2, 103/117 байт, тріщинами

Версія функції (117 байт):

def e():
 a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
 while a>0:
  s=chr(a%b)+s
  a//=b
 print s

Версія програми (103 байти):

a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
while a>0:
 s=chr(a%b)+s
 a//=b
print s

Це слід надрукувати Haystack добре . Випробуваний на Python Fiddle .

До речі, це перша спроба.

Не впевнений, чи враховується версія програми як фрагмент, тому я поставив тут обидві версії.



2

Python 2.7.10 з Numpy 1.12.1, 208 209 байт ( тріщинами) )

Виявляється, у Голки є Голка та Стог! Ось стог сіна; подивіться, чи зможете ви знайти Голку. Я сподіваюся, що ви так само весело шукаєте Голку, як я її приховував.

import numpy
print "".join([dir(numpy)[int(i)][1-0] for i in numpy.poly1d([-1*1433/252e1,-3232/1920.,4026./72/2/3.,613/(6*4.)*1,-4723./1.8e2,-9763/120.,-2689/(-1+5*17.),1+138*.4*2])(numpy.arange(-12/3,13%9))])

Він видає, як зазначено:

Haystack

Ви можете repl.it .


Не те, що насправді має значення, але це 209 байт, а не 208
caird coinheringaahing


2

Java 8, 321 байт, тріщини

v->{String h="Haystack";int x=-7;return x<0?h:new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")}).toByteArray())+(new StringBuffer("hidden".substring(++x%3^4,--x-x--).replaceFirst("dd","e"+(char)(x*211%+93))).reverse());}

Спробуйте тут.

Більш зрозумілі:

v->{
  String h="Haystack";
  int x=-7;
  return x<0?
          h
         :
          new String(new java.math.BigInteger(new byte[]{
            (byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),
            new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")
          }).toByteArray())
          +(new StringBuffer("hidden".substring(++x%3^4,--x-x--)
             .replaceFirst("dd","e"+(char)(x*211%+93))
            ).reverse());
}

Не впевнений, чи занадто він довгий / важкий. Потім знову ж таки, Java взагалі досить довго, тому приховування належним чином «Голки», звичайно, збільшує кількість байтів досить багато.
Якщо ніхто не зламає її, я » Пізніше додамо кілька підказок щодо спойлерів.


1
TIO має один менший характер, але тріщинами в будь-якому випадку.
жалібно

2

Ruby , 185 байт, потрісканий кабіною404

x='yGwztsPXhxDkBKlCYdFjQnpUROfoHvqmTgbaJSLcEiZrIAuMVNW'
s="n=x.to_i 36;x.bytjs.jach_cons(3){|a,b,c|n+=n*b%c;n*=a^b};puts n%8675309==1388649 ?'Njjdlj':'Haystack'"
eval s.tr ?j,s.size.chr

Спробуйте в Інтернеті!

Я спробую придумати щось примхливе, але наразі ось спробу "простого, але прикрого".



1
це було весело ^^
cab404

Молодці! Радий груба сила не була занадто нудною.
гістократ

2

Мозок-Флак , 188 байт ( тріщинами) )

Я тільки бачив хостелу Funky Computer Людини відповідь Як я це.

Він дещо затуманений.

((((((((((()()()){}){}()){}){}()){}()))<({}[(()()()()){}])(([[]]({})<>)<>)>((()()())){}{})[()]))<[[]()]>((()){}){}((){}[][(<>){}<>])(<>){}(({}<>()[()])[(((()()()){}<[()]>)<(()){}>{}){}()])

Спробуйте в Інтернеті!

Розраховане рішення, 96 байт:

((((((((((()()()){}){}()){}){}()){}()))<({}[(()()()()){}])(([[]]({})<>)<>)>((()()())){}{})[()]))<[[]()]>((()){}){}((){}[][(<>){}<>])(<>){}(({}<>()[()])[(((()()()){}<[()]>)<(()){}>{}){}()])((((((((()()()){}){}){}()){}){}()<>)<>)(()()()){}())<>(((({}[()]<>)()))[(((()()()){}())()){}{}])
(((((((( (()()()){}){}  ){}){}()){}()))      ()()                   <>)     (()()()) {}    () ) <      >((()      ((){}    <>)     )   )  (({}        )[(((()()  ){}  ()  )  () {}   ){}()])

Спробуйте в Інтернеті!


Ви маєте на увазі дещо затуманене, що перебуває за межами звичайної омертвіння.
Грифон - Відновіть Моніку

@Gryphon Так, я додав кілька зайвих біт.
H.PWiz


2

T-SQL, 757 символів КРАСНЕНО

Вибачте за видалення моєї попередньої відповіді - я надто багато разів редагував її, коли переплутався, і не хотів нічого віддавати. :)

У будь-якому випадку заплутування в SQL трохи важко, якщо ви не хочете робити божевільні речі , як це , і я не був , що інвестовані.

Крім того, я без зусиль не вибачаюся за те, що називав свої змінні після Dota.

SQL Fiddle

create table a(l int,c int)
insert into a values (1,10),(2,1),(3,8),(4,0)
go
;CREATE FUNCTION b(@ varchar(max)) returns varchar(max) as
begin return 'char('+@+'),'''','end 
go
;CREATE FUNCTION h(@ varchar(max),@a varchar(max), @b varchar(max), @c varchar(max), @d varchar(max), @e varchar(max), @f varchar(max), @g varchar(max), @h varchar(max))
returns varchar(max) as 
begin
return replace(replace(replace(replace(@,@a,@b),@c,@d),@e,@f),@g,@h)
end
declare @x varchar(max),@ int=1,@y varchar(99)=''
,@D varchar(4)='Ha',@O varchar(4)='ys'
,@T varchar(3)='ta',@A varchar(4)='ck'
WHILE @<=4
BEGIN
set @y+=(SELECT dbo.b(c+100)from a where l=@)+' '
set @+=1
END
SELECT @x='select
left(dbo.h('''+@D+@O+@T+@A+''','+ left(@y,len(@y)-1) +'),char(56))'
execute(@x)

Якщо це найпростіша відповідь у цій темі, ви, мабуть, праві. : P Важко обманути SQL.


чи не повинен «стог сіна» бути «стогом сіна»?
cab404

SQL не дуже добре поводиться з великими літерами (якщо ви конкретно не визначите схему, яку слід використовувати для літер). Я вирішив не робити цього. : P
phroureo

1
@phroureo Специфікація чітко зазначає, що вона повинна бути написана з великої літери.
LyricLy

Добре, я виправив код вище (хоча я не обов'язково виправляв SQL Fiddle, оскільки він працює так само).
phroureo


1

Лі , 40 байт, потрісканий

(78)"e"&p"Ha"s"yst"l"ck"&o(100)"l"l'&'o;

Спробуйте в Інтернеті!

О, хлопче, ще одне подання Ly CNR. Вони не дуже добре працювали в історії (можливо, це стосується мене, а не мови), але ми побачимо, як цей тариф і сьогодні не є винятком.

Рішення:

(78)"e"sl(100)"l"l&o;, видаліть за XXXXXX XXXXX XXXXXX X Xдопомогою семи провідних пробілів



1

Java , 345 байт, тріщинами

import java.util.*;interface Main{static void main(String[]args){Stack<Hay>s=new Stack();s.add(new Needle());for(int i=0;i<1000;i++)s.add(new Hay());System.out.println(s.get(s.indexOf(new Hay())+1).a);}}class Needle extends Hay{{a="Needle";}}class Hay{String a="Haystack";public boolean equals(Object o){return getClass().equals(o.getClass());}}

Спробуйте в Інтернеті!

Дійсно довгий і, ймовірно, легко зламати, але принаймні, у нього є Stack<Hay>!


дуже приємний! але так, досить легко зламати.
Тіт

0

TI-BASIC, 119 байт (безпечно)

Вихід, що зберігається в Ans.

"TIBASIC→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X

Рішення

Видаліть символи, Str1щоб додати його довжиною до 1.

"C→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X


0

Ацето , 154 байти (безпечно)

              27 \ 'dNU QJi9MLJ € {{x (}] J {'! O∑ € xiDQxsJ (] sicpicp1.2sJJicp90I.2 + D / edxi - '> xd80J0IJicx'NIx5sJsJidcpIcpL7sssJicpei7 + UUpJicpI7 +'UJJppic7''p'cppic7''p'cppic7''p'cppic7''p'cppic7''p'cppic7''p'cppic7''p'cppic7   

Спробуйте в Інтернеті!

"N'ed'd80J0IJic'eUpppppp Спробуйте в Інтернеті!

Explanation:
<space>*2 - Two spaces for the hilbert curve to work right
'N pushes 'N' onto the stack
'e pushes 'e'
d duplicates it
'd pushes d
80 pushes 8, 0
J concats top two values
0I pushes 0, pops, increments, pushes back on, net effect: pushes 1
J concats to '108'
i converts to integer
c pops and pushes ascii equiv on stack
'e pushes 'e' (again)
U reverses the stack
and the p's print out the stack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.