क्या यह एक में तीन अंकों की संख्या समाप्त हो रही है?


27

एक गैर-पूर्णांक को देखते हुए, वापसी करें कि क्या यह तीन अंकों की संख्या एक में समाप्त हो रही है, किसी भी पूर्णांक आधार में। दूसरे शब्दों में, संख्या को आधार-एन में दर्शाया जाना चाहिए, एन शून्य से अधिक पूर्णांक है।

नियम

  • यह , इसलिए सबसे कम उत्तर जीतता है।
  • चूँकि एकता अजीब तरह से व्यवहार करती है, इसलिए इनपुट 3 10 के साथ व्यवहार अपरिभाषित है।
  • मानक कमियां निषिद्ध हैं।

उदाहरण

सच:

5   
73  
101 
1073
17
22
36
55
99  

असत्य:

8
18
23
27
98
90
88
72
68

मुट्ठी भर बड़ी संख्या:

46656 true
46657 true
46658 true
46659 true
46660 true
46661 false
46662 false
46663 true
46664 false
46665 true
46666 true
46667 false
46668 false
46669 false
46670 true
46671 true

1
अजीब तरह से एकल बर्ताव करता है के बाद से नहीं, यह अजीब तरह से व्यवहार नहीं करता है, एक गैर नकारात्मक पूर्णांक के एकल प्रतिनिधित्व nसिर्फ है n 1जैसे है, 0 = ()₁, 3 = (111)₁, 10 = (1111111111)₁, आदि
एरिक Outgolfer

6
@EriktheOutgolfer यह काफी अलग तरह से व्यवहार करता है; आप उदाहरण के लिए 1 से n-ithift में विभाजित नहीं कर सकते।
wizzwizz4

3
सुसंगत पूर्णांक आधार का क्या अर्थ है? (इसके अलावा, नियमों में एकात्मकता को छोड़कर आप केवल N
Lynn

1
@ लियन एक एकल मूलांक के साथ एक स्थिति संकेतन, जैसे बेस दस, जैसा कि आप शाही इकाइयों या समय के साथ देखते हैं जैसे स्थिति-निर्भर मूलांक के विपरीत।
HAEM

1
@ एक परिशिष्ट के रूप में, मैं भी तर्कसंगत, नकारात्मक, जटिल आदि ठिकानों को बाहर करने की कोशिश कर रहा था। अपने दूसरे बिंदु के रूप में, एकात्मक के बारे में नियम का इरादा न तो शामिल करना और न ही एकमत को बाहर करना है। जब तक मैंने सोचा कि भाषा अधर्म के प्रति मेरी समझ और भी खराब है, "अपरिभाषित व्यवहार" का अर्थ है "जो कुछ भी लागू करने वाली पार्टी चाहती है", जो कि मैं उसके लिए जा रहा था।
20

जवाबों:


10

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

bRṫ€3ċJ

आधारों की संख्या लौटाता है (नॉन-जीरो ट्रू, जीरो मिथ्या हो रहा है) जिसमें इनपुट एक में तीन अंकों की संख्या होती है।

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

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

bRṫ€3ċJ  Main link. Argument: n

 R       Range; yield [1, ..., n].
b        Base; convert n to bases 1, ..., n.
  ṫ€3    Tail each 3; remove the first two elements of each digit array.
      J  Indices of [n]; yield [1].
     ċ   Count the number of times [1] appears in the result to the left.

10

जावास्क्रिप्ट (ईएस 7), 43 40 39 बाइट्स

f=(n,b)=>n<b*b?0:n%b==1&n<b**3|f(n,-~b)

परीक्षण के मामलों

टिप्पणी की गई

f = (n,           // given n = input
        b) =>     // and using b = base, initially undefined
  n < b * b ?     // if n is less than b²:
    0             //   n has less than 3 digits in base b or above -> failure
  :               // else:
    n % b == 1 &  //   return a truthy value if n is congruent to 1 modulo b
    n < b**3 |    //   and n is less than b³ (i.e. has less than 4 digits in base b)
    f(n, -~b)     //   or the above conditions are true for some greater value of b






3

गणितज्ञ, 43 बाइट्स

!FreeQ[IntegerDigits[#,2~Range~#],{_,_,1}]&

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

या इसे ऑनलाइन आज़माएं! (बड़ी संख्या)

मार्टिन एंडर ने 3 बाइट्स बचाए


!FreeQ[#~IntegerDigits~Range@#,{_,_,1}]&अगर आपको IntegerDigits::ibase: Base 1 is not an integer greater than 1.चेतावनी देखकर कोई आपत्ति नहीं है तो थोड़ा कम है । (यह अब भी सही उत्तर देता है।)
मिशा लावरोव

3

वोल्फ्राम भाषा (गणितज्ञ) , 35 बाइट्स

Or@@Array[x~Mod~#==1<x/#^2<#&,x=#]&

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

स्पष्ट रूप से जाँच करता है कि n% i = 1 और मैं 2 <n <i 3 किसी भी संभव आधार के लिए मैं । गोल्फ के उद्देश्यों के लिए, असमानता को 1 <n / i 2 <i से पुन: व्यवस्थित किया जाता है , ताकि इसे समानता पर जंजीर बनाया जा सके।




2

APL (Dyalog Unicode) , 21 20 14 बाइट्स SBCS

-5 @ धन्यवाद के लिए धन्यवाद।

विशुद्ध रूप से अंकगणित समाधान (वास्तव में कोई आधार रूपांतरण नहीं करता है) और इस प्रकार बहुत तेजी से।

3∊⊢(|×∘⌈⍟)⍨1↓⍳

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

⊢(... )⍨1↓⍳ एक d ndices 1 से गिरा दिया ... तर्क और तर्क, लागू करें:

| विभाजन रहता है

×∘⌈ गोल-गोल

 लॉग एन तर्क

3∊ तीन उस का एक सदस्य है?


आप तर्कों की अदला⊢(∨/(3=∘⌈⍟)∧1=|)⍨1↓⍳
बदली

@ धन्यवाद धन्यवाद। अगली बार, बेझिझक ऐसे संपादित करें (यदि आपको ऐसा लगता है)।
अदम

ठीक है। यहाँ एक और अधिक जटिल सुधार है जो मैं आपको संभालने के लिए छोड़ता हूं - यह आपके अन्य समाधान के रूप में कम करता है:(⊂1 3)∊⊢(⌈|,¨⍟)⍨1↓⍳
ngn

1
3∊⊢(|×|×∘⌈⍟)⍨1↓⍳
ngn

2
@ngn 1=⌈a⍟b, a≤ba=b0=a|b0=b|b
एडम


1

भूसी , 15 बाइट्स

V§&o=1→o=3LṠMBḣ

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

व्याख्या

V§&(=1→)(=3L)ṠMBḣ  -- implicit input, for example: 5
             ṠMB   -- map "convert 5 to base" over..
                ḣ  --   range [1..5]
                   -- [[1,1,1,1,1],[1,0,1],[1,2],[1,1],[1,0]]
V                  -- does any of the elements satisfy the following
 §&( 1 )( 2 )      --   apply functions 1,2 and join with & (logical and)
         =3L       --     is length equals to 3?
    =1→            --     is last digit 1?


1

सी, 60 बाइट्स

एक फ़ंक्शन जो गैर-शून्य लौटाता है यदि तर्क को 1 में समाप्त होने वाले तीन अंकों की संख्या के रूप में दर्शाया जा सकता है:

i,j;f(n){for(j=0,i=sqrt(n);i>cbrt(n);)j+=n%i--==1;return j;}

नोट: यह GCC के साथ काम करता है, जहाँ फ़ंक्शन अंतर्निहित हैं। अन्य संकलक के लिए, आपको संभवतः यह सुनिश्चित करने की आवश्यकता है कि तर्क और वापसी प्रकार ज्ञात हैं:

#include<math.h>

व्याख्या

जिसमें सबसे कम आधार n3 अंकों में दर्शाया गया है ⌊∛n⌋, और सबसे कम आधार जिसमें n2 अंकों को दर्शाया गया है ⌊√n⌋, इसलिए हम बस यह परीक्षण करते हैं कि संख्या 3 अंकों की सीमा में किसी भी आधार के 1 मॉड्यूल के अनुरूप है या नहीं। हम स्थिति को संतुष्ट करने वाले आधारों की संख्या को गैर-शून्य (सत्य) या शून्य (मिथ्या) मान के रूप में उपयुक्त मानकर लौटाते हैं।

परीक्षण कार्यक्रम

स्थितिगत मापदंडों के रूप में किसी भी संख्या में इनपुट पास करें:

#include<stdio.h>
int main(int c,char**v)
{
    while(*++v)
        printf("%s => %d\n", *v, f(atoi(*v)));
}

1

एपीएल (Dyalog यूनिकोड) , 19 बाइट्स SBCS

डेनिस विधि

(⊂,1)∊2↓¨⊢⊥⍣¯1¨⍨1↓⍳

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

(⊂,1)∊ का [1]सदस्य है

2↓¨ दो तत्वों में से प्रत्येक से गिरा दिया

⊢⊥⍣¯1¨⍨ आधार में से प्रत्येक में दिए गए तर्क

1↓⍳तर्क के माध्यम से d ndices 1 से  एक गिरा ?



0

पाइट , 35 33 बाइट्स

←ĐĐ3=?∧∧:ŕĐ2⇹Ř⇹Ľ⅟⌊⁺3=⇹Đ2⇹Ř%*ž1⇹∈;

स्पष्टीकरण:

←ĐĐ                                             Push input onto stack 3 times
   3=?  :                       ;               If input equals 3, execute code after the question mark;otherwise, execute code after the colon. In either case, afterwards, execute the code after the semicolon
      ∧∧                                        Get 'True'
        :                                       Input not equal to 3
         ŕ                                      Remove 'False'
          Đ2⇹Ř                                  Push [2,3,...,n]
              ⇹Ľ⅟⌊⁺                             Push [floor(log_2(n))+1,floor(log_3(n))+1,...,floor(log_n(n))+1]
                   3=                           Is each element equal to 3
                     ⇹                          Swap the top two elements on the stack (putting n back on top)
                      Đ2⇹Ř                      Push [2,3,...,n]
                          %                     Push [n%2,n%3,...,n%n]
                           *                    Multiply [n%x] by the other array (i.e. is floor(log_x(n))+1=3?)
                            ž                   Remove all zeroes from the array
                             1⇹∈                Is 1 in the array?
                                ;               End conditional
                                                Implicit print

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


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