एक उत्तर पर जोर दें


31

रनटाइम के दौरान, इनपुट की एक पंक्ति के लिए संकेत देते रहें, जब तक कि उपयोगकर्ता कुछ (खाली न्यूलाइन के अलावा) इनपुट न कर दे, यानी केवल प्रेस Enterया नहीं करता है OK। आउटपुट या परिणाम न तो आवश्यक है और न ही निषिद्ध है।

छद्म संहिता १

myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
  waitfor(myform.ok,"click")
until myform.mytxt.content <> ""

छद्म कोड 2

LET TEXT = ""
WHILE TEXT = "" DO
  TEXT = PROMPT("")
ENDWHILE

उदाहरण 1

प्रोग्राम चलता है और तुरंत एक टेक्स्ट फ़ील्ड और एक OKबटन के साथ एक फॉर्म को पॉप अप करता है ।
उपयोगकर्ता OKबटन पर क्लिक करता है ।
कुछ नहीं हुआ।
उपयोगकर्ता पाठ क्षेत्र में "हैलो वर्ल्ड" चिपकाता है और OKबटन पर क्लिक करता है ।
कार्यक्रम समाप्त।

उदाहरण 2

फ़ंक्शन को कहा जाता है और तुरंत एक रिक्त रेखा और एक ब्लिंकिंग कर्सर प्रदर्शित करता है।
उपयोगकर्ता दबाता है Enter
कर्सर एक रेखा से नीचे चला जाता है।
उपयोगकर्ता दबाता है Enter
कर्सर एक रेखा से नीचे चला जाता है।
उपयोगकर्ता PPCGEnter
फंक्शन रिटर्न दबाता है।


क्या इसे केवल रिक्त स्थान के रूप में गिनने की अनुमति है?
12431234123412341234123

@ 12431234123412341234123 नंबर
Adám

क्या उपयोगकर्ता डेटा इनपुट करने के लिए पूरी लाइन की प्रतीक्षा करना आवश्यक है?
मट्टियो इतालिया

ठीक है, @ CodyGray के हटाए गए उत्तर में एक टिप्पणी से ऐसा लगता है कि इसकी अनुमति नहीं है।
माटेओ इटालिया

@ मत्तेयो इतालिया हाँ, सही; इनपुट की एक पंक्ति
शाम

जवाबों:


16

टीआई-बेसिक, 2 बाइट्स

:Prompt X

TI-BASIC यह स्वचालित रूप से करता है। एक बार इनपुट देने के बाद इसे छोड़ दिया जाएगा।

यहाँ एक GIF है:

यहाँ छवि विवरण दर्ज करें

enterकी प्रेस इतिहास में कुंजी पर गिनती देखो । TI-SmartView CE और ezgif.com के साथ बनाया गया ।


1
हम्म .. यह 2 बाइट्स है?
गिकी I


और यह उत्तर के लिए Enter नहीं लेगा? क्या यह ऑनलाइन परीक्षण करने के लिए कहीं भी है?
Adám

@ Adám यह एक उत्तर के लिए प्रवेश नहीं करेगा। जहां तक ​​मुझे जानकारी है, कोई भी जगह नहीं है जहां आप पहले से ही बिना टीआई रोम छवि के ऑनलाइन जा सकते हैं। मैं एक .gif पोस्ट कर सकता हूँ जब मैं घर पहुँचूँ, हालाँकि।
स्कॉट मिलनर

1
@ Adám बिना किसी ROM के खुद के बिना TI-BASIC को ऑनलाइन टेस्ट करना गैरकानूनी है।
एरिक आउटोलॉफ़र



15

जावास्क्रिप्ट, 37 22 17 बाइट्स

while(!prompt());

while(!prompt());

व्याख्या

whileकीवर्ड शुरू होता है whileपाश। लूप की स्थिति में, !prompt()इनपुट के लिए पूछता है और जांचता है कि यह दिया गया है या नहीं। यदि यह नहीं दिया जाता है, तो लूप के शरीर को निष्पादित किया जाता है, जो हमारे मामले में खाली है, फिर दुभाषिया लूप की स्थिति में वापस चला जाता है। जब तक उपयोगकर्ता इनपुट नहीं देता तब तक यही प्रक्रिया बार-बार होती है।


while(""==prompt(""));
एडम

@ Adám वाह। मैं सिर्फ इस बारे में सोच रहा था कि समाधान को कैसे छोटा किया जाए, और आप उत्तर के साथ आए!
अर्जुन

यह स्पष्ट लग रहा था। हालांकि, मेरा ब्राउज़र कंसोल एक अनुगामी के बिना निष्पादित करने से इनकार करता है ;, जबकि आपकी प्रारंभिक अभिव्यक्ति बिना ठीक काम करती है ;। कोई विचार क्यों?
एडम

नहीं, क्रोम। इसलिए यदि कोई जावास्क्रिप्ट इंजन वर्तमान अभिव्यक्ति की चूक को संभाल सकता है ;, तो आप उस बाइट को बचा सकते हैं :-)
Adám

1
@ Adám स्रोत कोड से अर्धविराम को हटाने के बाद उत्पन्न त्रुटि का वास्तविक कारण पता लगाता है। ऐसा क्यों होता है इसका कारण यह है कि लूप लूप कंडीशन के बाद लूप बॉडी के रूप में एक स्टेटमेंट (या स्टेटमेंट का समूह) की अपेक्षा करता है। अर्धविराम को जोड़ने से लगता है कि लूप बॉडी खत्म हो गई है। हालांकि, अर्धविराम को हटाने से यह लूप बॉडी के रूप में अगले बयान की उम्मीद करता है। लेकिन हमारे मामले में, लूप की स्थिति के बाद कोई नया बयान नहीं आया है। तो, यह एक त्रुटि फेंकता है। मुझे उम्मीद है कि अब यह स्पष्ट है। सामान समझाने में मैं भयानक हूँ !! : पी
अर्जुन

9

जावा, 55 बाइट्स

void f()throws Exception{while(System.in.read()==10);}}

अगर मुझे सही तरीके से याद है (पीपीसीजी पर सक्रिय होने के बाद से कुछ समय हो गया है), तो मेरा कार्यक्रम सिर्फ एक समारोह हो सकता है।

यह प्रणाली विशिष्ट है; यह केवल उन प्रणालियों पर काम करता है जहां अंत-पंक्ति का चरित्र एक एकल नई रेखा है। यदि अंत-पंक्ति वर्ण के बजाय एक गाड़ी वापसी है, तो 10साथ बदलें 13। विंडोज पर, यह काम नहीं करता है, क्योंकि विंडोज पर एंड-ऑफ-लाइन है \r\n

यह इस तथ्य का उपयोग करता है कि मैं सीधे से पढ़ सकता हूं System.in


2
आपका स्वागत है, यदि केवल इस उत्तर के लिए! : डी
कॉनर ओ'ब्रायन

3
आपका स्वागत है @Justin!
डिजिटल ट्रामा

1
सक्रिय होने पर योजना नहीं; बस यहाँ और वहाँ एक सवाल के लिए छोड़ने
जस्टिन

"विंडोज पर काम नहीं करता है" समस्या से बचने के लिए, क्या आप केवल पहले चरित्र का परीक्षण नहीं कर सकते हैं और देख सकते हैं कि क्या यह \rपूरे स्ट्रिंग के परीक्षण के विपरीत है, और फिर 2 ईओएल वर्ण होने के साथ समस्याओं में चल रहा है?
कोड़ी ग्रे

@ कोडिग्री नं। मैं एक समय में 1 चार्ट पढ़ रहा हूं; यह सब है कि System.inआप सीधे करते हैं (ठीक है, आप एक बार में वर्णों की एक सरणी पढ़ते हैं)। मेरा लूप बॉडी (खाली) इनपुट में हर चार के लिए चलाया जाता है
जस्टिन

9

एचटीएमएल 5, 33 22 बाइट्स

<form><input required>

<form><input required>

व्याख्या

requiredपर विशेषता <input>उपयोगकर्ता, -sort के- संदेश "इस क्षेत्र के लिए आवश्यक है" अगर वे एक मूल्य में प्रवेश नहीं करते सूचित करने के लिए ब्राउज़र का कारण बनता है। हालांकि, जब वे एक मूल्य दर्ज करते हैं, तो मान उस actionविशेषता की URL पर भेजा जाता है <form>(जो हमारे मामले में वर्तमान फ़ाइल ही है, क्योंकि हमने कोई मूल्य स्पष्ट रूप से निर्दिष्ट नहीं किया है)।

यह Google Chrome के नवीनतम संस्करण (55.0 संस्करण) पर परीक्षण किया गया था। अन्य ब्राउज़रों और संस्करणों में काम कर सकते हैं।


action=/कुछ ब्राउज़रों पर काम कर सकते हैं।
नील

1
आप शायद actionविशेषता को पूरी तरह से खोद सकते हैं।
झबरा

1
@ अर्जुन action=y.pआवश्यक नहीं है, क्योंकि अधिकांश उपयोगकर्ता एजेंट एक ही स्थान पर जमा करेंगे यदि कोई actionविशिष्ट नहीं है
मेयोरमोनी

@ अर्जुन मैंने <form><input required>नवीनतम Google Chrome संस्करण पर कोशिश की है और जैसा कि काम करता है। और अगर आपको संदेह है, तो उपयोग करें action=#। जो 2 बाइट्स बचाता है।
इस्माइल मिगुएल

3
@ अर्जुन कोड गोल्फिंग के लिए एक भयानक विचार है। मैं हर ब्राउज़र के बारे में नहीं कह सकता , क्योंकि मेरे पास कोई भी एंड्रॉइड 1.0, 1.6, 2.0, 2.1, 3.0, 3.1, 4.xx, 5.x, 6.x, ..., iPhone 2 - 7, नहीं है Google Chrome, फ़ायरफ़ॉक्स 3.0+ की हर एक रिलीज़ पर और ऑन और ऑन ... वास्तव में, सभी HTML5 ब्राउज़र requiredविशेषता को लागू नहीं करते हैं! इसके अलावा, #एचटीएमएल 1.0 के बाद से एक रास्ता उपलब्ध है, अगर मैं सही हूं। और actionआपके फॉर्म में कोई भी जोड़ने के रूप में ही नहीं है action=".", जो कि फ़ाइल ही है।
इस्माइल मिगुएल

8

जेली , 3 बाइट्स

ɠṆ¿

TIO पर देखने के लिए ज्यादा नहीं, मुझे डर है।

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

यह एक निलादिक कार्यक्रम है, जिसका अर्थ है कि इसमें कोई इनपुट तर्क नहीं है। इस मामले में निहित तर्क और वापसी मूल्य दोनों 0 हैं ।

¿(जबकि) एक त्वरित है जो लिंक स्टैक से दो लिंक पॉप करता है: एक शर्त ( ) और एक शरीर।

एक राक्षसी परमाणु है: फ्लैट तार्किक नहीं। यदि पिछला रिटर्न मान गलत है (यहां, 0 या एक रिक्त स्ट्रिंग), तो यह 1 वापस आ जाता है और निकाय कहा जाता है।

ɠएक निलादिक परमाणु है; यह STDIN की एक कच्ची लाइन पढ़ता है और परिणाम देता है।

एक बार ɠएक गैर-रिक्त रेखा पढ़ता है, 0 देता है और हम लूप से बाहर निकल जाते हैं।


वह उपवास, एह? ठीक है।
एडम


6

ब्रेनफक , 26 बाइट्स

+[>,----------[[-]<[-]>]<]

इसे ऑनलाइन आज़माएं!


1
यह TIO लिंक सब अच्छा और अच्छा है, लेकिन यह बताना थोड़ा कठिन है कि दौड़ने पर क्या होता है ... ;-)
Adám

1
@ पता करें कि आप ,.सत्यापन के लिए अंत तक अपील कर सकते हैं।
लीक नून

5

पर्ल 5, 8 + 1 (-पी या एन ध्वज) बाइट्स

/./&&die

स्टडिन से इनपुट लेता है और जैसे ही regex एक नई रेखा को छोड़कर कुछ भी मेल खाता है।


5

सी, 52 बाइट्स , 33 बाइट्स , 29 बाइट्स

-19 बाइट्स जस्टिन को धन्यवाद

-4 बाइट्स क्रिस्टोफ के लिए धन्यवाद

main(){while(getchar()==10);}

10 '\ n' के बराबर है - यदि यह स्पष्ट नहीं है।


1
आप इसे 1 लूप के ;बजाय 1 {}लूप के बजाय गोल्फ का उपयोग कर सकते हैं
जस्टिन 7

1
हालांकि नहीं मानकों के अनुरूप है, तो आप निकाल सकते हैं #include<stdio.h>यदि आप करने के लिए स्विच while(getchar()==10): int main(){while(getchar()==10);}
जस्टिन

2
@Justin main(){while(getchar()==10);}डिफ़ॉल्ट इंट के लिए पर्याप्त नहीं है।
क्रिस्टोफ

1
main(){scanf("%s");}यह भी काम करेगा, अगर अंतरिक्ष-केवल रेखाएं खाली के रूप में गिन सकती हैं।
12431234123412341234123

1
@DanielEarwicker आप सही हैं। यह पहली बार मुझे स्पष्ट नहीं लगा कि मैंने प्रश्न पढ़ा है, लेकिन अब मैं देख रहा हूं कि आप क्या कह रहे हैं। उस स्थिति में, इस प्रश्न के कई गैर-अनुरूपण उत्तर हैं।
जस्टिन

5

बैश, 51 बाइट्स (39 बिना "#! / बिन / बैश")

यह मेरा पहली बार पीपीसीजी में भाग लेना है, इसलिए असभ्य मत बनो; डी

#!/bin/bash
read a
while [ -z "$a" ]
do
read a
done

1
PPCG में आपका स्वागत है।
एडम

3
PPCG में आपका स्वागत है!, यदि आप बैश को एक गोल्फ भाषा के रूप में उपयोग करने की योजना बना रहे हैं, तो आपको यह पोस्ट दिलचस्प लग सकती है , इसमें बैश कार्यक्रमों को मानवीय रूप से छोटा बनाने के लिए युक्तियों का एक समूह है, एक और सामान्य संस्करण भी है जिसे आप चाहते हैं। स्किम के माध्यम से भी।
colsw

@ConnorLSW वाह, धन्यवाद, उस पोस्ट से मुझे बहुत मदद मिलेगी। मैं इस नए टिप्स ASAP के साथ अपने उत्तर को संपादित करने की कोशिश करूंगा।
निकोलस फिशर

4
आपको जरूरत नहीं है#!/bin/bash
12431234123412341234123

ठीक है, मेरे लिए भी पहली बार :) लेकिन आप शायद पुनरावृत्ति का उपयोग कर सकते हैं: [ -z `line` ] && $0या यदि पदावनत lineआपके सिस्टम पर नहीं है [ -z `head -n1` ] && $0:। यह 20 या 24 बाइट्स होना चाहिए।
यति

4

जावा , 128 126 बाइट्स

केविन क्रूज़सेन को 2 बाइट्स धन्यवाद।

import java.util.*;class a{public static void main(String[]a){for(Scanner s=new Scanner(System.in);s.nextLine().isEmpty(););}}

इसे ऑनलाइन आज़माएं!


1
आप दो बाइट्स से यह गोल्फ कर सकते हैं: बदलें whileएक करने के लिए forऔर डाल Scanner s=new Scanner(System.in);इसके अंदर। और .equals("")करने के लिए बदल जाते हैं .isEmpty()
केविन क्रूज़सेन

मुझे पूरा यकीन है कि यदि आप स्कैनर के उपयोग को इनलाइन करते हैं तो आप आयात को हटा सकते हैं; बहुत यकीन है कि एक स्कैनर लीक बस ठीक काम करता है:while(new java.util.Scanner(System.in).nextLine().isEmpty());
जस्टिन 14

4

सी # (.NET कोर) , 66 बाइट्स

class C{static void Main(){for(;System.Console.ReadLine()!="";);}}

इसे ऑनलाइन आज़माएं!

-6 बाइट्स raznagul के लिए धन्यवाद।


1
आप System.Console.ReadLIneसीधे लिखकर 6 बाइट्स बचा सकते हैं और using-Statement को छोड़ सकते हैं ।
राजनागुल

एक whileलूप बाइट्स की समान संख्या होगी, लेकिन forलूप की तुलना में कोड लिखने का अधिक मुहावरेदार तरीका है ।
कोडी ग्रे

आप 24 बाइट्स को फॉर्म में एक
लंबोदर के

या वैकल्पिक रूप से, 7 इसे एक उदाहरण विधि
बनाते हैं

4

QBasic 4.5, 15 बाइट्स

INPUT a$:IF a$=""THEN RUN

इनपुट के लिए पूछता है, तो जांच करता है कि क्या दिया गया था। यदि नहीं, RUNतो प्रोग्राम को पुनरारंभ करें।


2
के बारे में पता नहीं था RUN। +1। (वह तुकबंदी भी; RUN और प्लस वन :))
अर्जुन

4

रूबी, 13 बाइट्स

gets until/./

काश getsकोई रेक्सएक्सप तर्क ले लेता।


4

आर, 27 24 23 22 बाइट्स

while(!sum(scan()^0))t

स्टडिन से इनपुट लेता है, और जब तक इनपुट लंबाई का होता है 0. जारको डबेलडैम और मिकी के कारण कुछ बाइट्स काट दें। एक और बाइट को बचाने के लिए के {}साथ बदल दिया t


मुझे लगता है कि आप इसे छोड़ सकते हैं ,'', क्योंकि न तो इनपुट (स्ट्रिंग या संख्यात्मक) और न ही समाप्ति का तरीका चुनौती में निर्दिष्ट किया गया था।
JAD

@JarkoDubbeldam: अच्छी पकड़! मुझे नहीं पता था कि त्रुटियां एक वैध समाप्ति थीं।
rturnbull

while(!sum(scan()^0)){}साथ ही काम करेगा ?
मिकी

@ मिक्की काम करने लगती है। जाहिर है यहां तक ​​कि Inf ^ 0 है। के साथ अच्छा पकड़ sum()। बहुत बुरा ^0है 0इनपुट के रूप में संभालने की जरूरत है ।
JAD

@ मिक्की यह उपयोग के साथ एक महान खोज है sum, धन्यवाद! मैंने जवाब अपडेट कर दिया है।
rturnbull

3

PHP, 18 बाइट्स

while(!readline())

क्या यह जाँच करता है कि पाठ की रेखा खाली नहीं है?
डेनियल ईयरविकर

1
हां, जैसे ही लाइन खाली readline()नहीं होती है खाली स्ट्रिंग के अलावा कुछ और होता है। गैर खाली तार truephp में मूल्यांकन करते हैं - कम से कम उनमें से अधिकांश करते हैं। जैसा कि मैंने अभी डॉक्स में पढ़ा है, "0" एक अपवाद प्रतीत होता है। खैर मुझे लगता है कि मेरा जवाब अब गलत है।
स्काईनेट

3

AWK , 8 11 बाइट्स

NF{exit}

इनपुट की प्रतीक्षा करें। यदि इनपुट में फ़ील्ड्स की संख्या 0 से अधिक है, तो बाहर निकलें।

संपादित करें:

मैंने अभी महसूस किया है कि यह केवल व्हाट्सएप वर्ण वाले इनपुट के लिए काम नहीं करता है। IFS को -F ""कमांड लाइन विकल्प का उपयोग करके खाली स्ट्रिंग पर सेट करने की आवश्यकता है । इसलिए +3 बाइट्स।

इसे ऑनलाइन आज़माएं!


वास्तव में, आप के NFसाथ बदल सकते हैं 1। फिर आपको सेट करने की आवश्यकता नहीं है IFS। और शिकायत तुम मेरे लिए और हरा AWKसमाधान।
रॉबर्ट बेन्सन

1
@RobertBenson मैंने NFसाथ बदलने की कोशिश की 1। उस स्थिति में प्रोग्राम किसी भी इनपुट को छोड़ देता है, जिसमें खाली न्यूलाइन भी शामिल है।
मैक्सिम मिखायलोव

मुझे कल्पना का वह हिस्सा याद आ गया।
रॉबर्ट बेन्सन

3

SpecBAS - 34 बाइट्स

1 DO : INPUT a$: LOOP UNTIL a$<>""

बस तब तक लूप करें जब तक कि गैर-रिक्त स्ट्रिंग में प्रवेश न किया जाए।



3

हास्केल, 19 17 बाइट्स

f=do""<-getLine;f

एक कार्य को परिभाषित करता है f कि अगर वह पढ़ता है तो खाली लाइन खुद को फिर से कॉल करती है। जब एक गैर-रिक्त रेखा को पढ़ा जाता है तो एक अपवाद उठाया जाता है और पुनरावृत्ति को रोक दिया जाता है।

संपादित करें: @ लैकोनी ने पैटर्न मैच के साथ पैरामीटर को बदल दिया और 2 बाइट्स बचाए। धन्यवाद!


नहीं सोचा था कि हास्केल आईओ कोड इस रूप में छोटा हो सकता है!
गीकी I

17 बाइट्स:f=do""<-getLine;f
लैकोनी

@ लियोनी: अच्छा कैच। धन्यवाद!
nimi

3

एसीटो , ४ बाइट्स

rएक मान, इसे नकारात्मक ( !; संक्षेप में एक बूलियन को कास्टिंग), और क्षैतिज रूप से दर्पण यदि मूल्य सत्य है ( |)।

!
r|

रुको, एसीटो ** ** चलाता है और वे कहते हैं कि APL दाएं से बाएं चलने के लिए अजीब है ...
Adám

3
@ Adám Aceto एक 2D हिल्बर्ट वक्र के साथ चलता है।
L3viathan

3

जावा, 66 64 60 बाइट्स

int a(){return!System.console().readLine().isEmpty()?0:a();}

मेरा पहला जावा उत्तर, कुछ सुझाव पसंद आएगा!


आप शायद के बीच की जगह को हटा सकते हैं returnऔर !.equals("")== .isEmpty()। आप स्ट्रिंग के बजाय int वापस कर सकते हैं। OTOH, शून्य लेकिन या तो वापस कर while(System...)याif(System...)a();
जस्टिन

आप कर सकते हैं int a(){..?0:a();}, 3 बाइट्स बचाता है
खालिद

@ खालिद.के वास्तव में ४!
ओल्डबनी 2800

@Justin और Khaled.K को, आपकी सलाह के लिए धन्यवाद!
ओल्डबनी 2800

2

ब्रिंगोल्फ , 8 बाइट्स [गैर-प्रतिस्पर्धी]

1[{?:+|]

गैर प्रतिस्पर्धा क्योंकि { , जो एसटीडीआईएन से इनपुट पढ़ता है, को इस चुनौती के बाद की तारीख के बाद ब्रिंगोल्फ में जोड़ा गया था।

स्पष्टीकरण:

1         Pushes 1 to the stack
 [        Begins while loop
  {       Reads from STDIN, returns -1 if no input given
   ?      Checks if last item in stack is > 0
    :     Else
     +    Adds the last 2 items together, however there is only 1 item, so add it to itself
      |   Endif
       ]  End While, decrement first item in stack, or exit if first item is 0

Haha, आपने चुनौती पोस्ट किए जाने के एक घंटे बाद इनपुट लागू किया
केवल

@
ASCII-


2

05AB1E , 5 बाइट्स

[IõÊ#

स्पष्टीकरण:

[     Start infinite loop
 I    One line of input
   Ê  Not equal to
  õ   Empty string
    # Break if true

इसे ऑनलाइन आज़माएं!


ये 5 यूनिकोड कोड पॉइंट हैं, न कि 5 बाइट्स; वे UTF-8 में 7 बाइट्स, UTF-16 में 10 बाइट्स और UTF-32 में 20 बाइट्स हैं।
मट्टियो इतालिया

@MatteoItalia 05AB1E अपने स्वयं के एन्कोडिंग का उपयोग करता है , इसलिए इनमें से प्रत्येक वर्ण 1 बाइट है।
ओकेक्स

उह, क्षमा करें, मैं सही हूं!
माटेओ इटालिया

2

पॉवरशेल, 20 बाइट्स

for(;!(read-host)){}

लूप के लिए चलाता है,

read-host इनपुट के लिए संकेत देता है

अगर रीड-होस्ट रिटर्न कुछ भी नहीं है, तो यह गलत है, इसलिए हम इसका उल्टा करते हैं !(...) और लूप एंड चेक के रूप में उपयोग करते हैं।

do{$a=read-host}while($a-eq"")चर से जुड़े किसी भी प्रकार के समाधान से बहुत कम ।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.