Запитання без відповіді


9

Цей дорогий сайт StackExchange має стільки проблем і стільки хороших відповідей. Але як бути з викликами, на які ніколи не відповідали ?

Завдання

Напишіть програму або функцію, яка буде друкувати псевдовипадкову відкриту без відповіді (як у запитанні з точно нульовими відповідями) від PPCG. Усі можливі виклики повинні бути вироблені з однаковою ймовірністю.

Вхідні дані

  • Вхід не приймається.

Вихідні дані

  • Повинно бути лише заголовок, теги та посилання, які повинні бути розділені новими рядками.
    • Назва повинна бути точно такою, якою вона є в виклику.
    • Теги не мають строгого вихідного формату, але повинні містити всі теги.
    • Посилання може містити або не містити question-nameпісля ідентифікатора питання і повинно призвести до виклику.
  • Можливо, або не може бути перекладено у читаний для людини формат.
    • & до &
  • Простір провідних та кінцевих пробілів дозволений.

Приклади

Encode a steganographic encoder into a package
code-challenge,unicode,steganography
/codegolf/65159/encode-a-steganographic-encoder-into-a-package

Simple predictive keyboard CG
code-golf
/codegolf/76196/simple-predictive-keyboard-cg

Оцінка балів

Як це є , найкоротша відповідь у байтах виграє.


8
Мені дуже стає нудно від проблем, пов'язаних з обміном ставок-api .
Rɪᴋᴇʀ

3
@Riker Uhm ... дякую за відгук? Я насправді не знаю, чому ти би зголосився з цієї причини, але більше сил тобі, мабуть.
повністюлюдсько

6
Я не виступав проти цього. Я прихильнився, тому що вважаю, що питання нудне. Також, чи повинні закриті питання мати рівну ймовірність виходу?
Rɪᴋᴇʀ

1
Хоча я не відчуваю це так сильно, як @Riker, останнім часом, здається, існує багато проблем, пов'язаних з API; настільки, що мені вдалося заблокувати використання API протягом ~ 21 години !
Кудлатий

4
Цікаво, що цей виклик з’явиться під час тестування, але як тільки я відповім на нього, він більше не з’явиться на тестуванні.
HyperNeutrino

Відповіді:


7

JavaScript + HTML, 271 250 232 байт

Очевидно, ви можете використовувати Dates як псевдовипадкові числа. Я вкрав це з відповіді Шаггі .

(Використовує лише близько 4 ваших квот)

q=[]
g=f=>fetch('//api.stackexchange.com/questions/unanswered?site=codegolf&page='+f).then(r=>r.json().then(j=>(q=[...q,...j.items])^j.has_more?g(f+1):document.write(`<pre>${(q=q[new Date%q.length]).title}
${q.tags}
`+q.link)))
g(1)

Він робить масив q, потім викликає g(1), який отримує першу сторінку результатів і додає її до q. Потім, якщо запит промовляє це has_more, він дзвонить g(f+1), який отримує наступну сторінку, до тих пір, поки вона не досягне кінця і випише в документ HTML (Що автоматично не скасовує відповідь)

Якщо нас не цікавлять усі питання без відповідей, лише останні 30 (використовує лише 1 вашу квоту):

JavaScript + HTML, 213 196 179 байт

fetch`//api.stackexchange.com/questions/unanswered?site=codegolf`.then(r=>r.json().then(j=>document.write(`<pre>${(j=j.items[new Date%j.items.length]).title}
${j.tags}
`+j.link)))


Вибачте, @Artyer, я був так зосереджений на роботі над своєю власною відповіддю, що ніколи не помітив, що ти кілька хвилин побив мене на удар. Я радий видалити свою відповідь, якщо ви вважаєте, що вона схожа на вашу.
Кудлатий

@Shaggy Це добре. Я також написав другу відповідь одночасно з тим, як ви написали свою відповідь, тож щасливий збіг обставин, що вони закінчилися подібними.
Artyer

Ви можете зберегти кілька байдів шляхом жорсткого кодування в кількості сторінок, які потрібно отримати. Замість цього j.has_more?g(f+1)спробуйте++f<5?g(f)
Shaggy

Ви також можете замінити q=q.concat(j.items)на q=[...q,...j.items]. Схоже, Tags: це необов’язково, тому ви можете також відмовитись від цього. І немає необхідності join q.tags, він буде примусово вводитись у рядок, приєднуючись до рядка. Нарешті, використання буквального шаблону для фіналу також має заощадити кілька байтів.
Кудлатий

@Shaggy На жаль, я зустрів свою квоту. Однак він скидається за 425 секунд.
Artyer

6

Python + запити + json + random + html, 249 239 байт

import requests as r,json,random as R,html
j=R.choice(json.loads(r.get('http://api.stackexchange.com/questions/no-answers?site=codegolf').text)['items'])
print('\n'.join([html.unescape(j['title']),'Tags: '+', '.join(j['tags']),j['link']]))

Вийшло довше, ніж я хотів би.

-10 байт завдяки @totallyhuman, використовуючи, R.choiceа не R.shuffleвзявши перший елемент.


Чи можете ви зберегти кілька байт за допомогою random.shuffle?
повністюлюдсько

... Почекайте, а ще краще random.choice(),?
цілкомлюдсько

1
@totallyhuman Зміна назви впуску насправді не має значення в кількості рахунків: P Але спасибі за .choice()!
HyperNeutrino

Вам не потрібна бібліотека json, скористайтеся r.get(url).json()натомість
тим

Це не враховує has_more. Він вибирається лише випадковим чином з першого 30-го.
Artyer

0

Bash 255 232 байт

a="api.stackexchange.com/questions/";b="?site=codegolf";c=$(w3m $a"unanswered"$b"&filter=total"|tr -cd 0-9);w3m $a"no-answers"$b"&pagesize=1&page="$((RANDOM%c))|jq -r ".items[0]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

Схоже, що неправильні результати повертаються підсумками за невідповіді / невідповіді. Загальна ідея - отримати загальну суму, ніж отримати випадкову сторінку з одним елементом.

Bash 174 153 байт

w3m api.stackexchange.com/questions/no-answers?site=codegolf|jq -r ".items[$RANDOM%(.items|length)]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

Він вибирає одне випадкове запитання з останніх 30, а не з усіх питань. Працює з командного рядка. Потрібні curl w3m, jq та перекодувати.

результат:

Tips for golfing in Charcoal
code-golf, tips
/codegolf/117269/tips-for-golfing-in-charcoal

Я впевнений, що вам потрібно вибрати з усіх них. Але ласкаво просимо до PPCG у будь-якому випадку!
NoOneIsHere
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.