0 और n के बीच सभी पैलिंड्रोमिक संख्याओं को (दशमलव में) गणना करें


11

एक गैर-नकारात्मक पूर्णांक n को देखते हुए, 0 और n (समावेशी श्रेणी) के बीच सभी पैलिंड्रोमिक संख्या (दशमलव में) गणना करें। जब एक अंक उलट जाता है, तो एक पैलिंड्रोमिक संख्या वही रहती है।

पहला पैलिंड्रोमिक संख्या (आधार 10 में) यहां दी गई हैं :

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 353, 373, 373, 383, 393, 404, 404। 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, ...

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


3
1 और n (शीर्षक के अनुसार) या 0 और n (शरीर के अनुसार) के बीच? और कौन सी सीमा "के बीच" शामिल है?
पीटर टेलर

@wok: आप अभी भी जवाब नहीं दिया है अगर यह समावेशी या अनन्य सीमा है? है nदायरे के भीतर शामिल करने के लिए?
मेलमोकब

@ ममलमोकब समावेशी रेंज।
वोक

जवाबों:


7

गोल्फस्क्रिप्ट, 15 वर्ण

~),{.`-1%~=},n*

आप संख्या '~), {`।-1% =}, n *' के बजाय एक तार की तुलना कर सकते हैं।
हावर्ड

@ हॉवर्ड, अगर आप पोस्ट करना चाहते हैं कि मैं खुद इसे अपडाउन करूंगा।
पीटर टेलर

यह सादे नकल की तरह महसूस होगा ;-)
हावर्ड

10

पर्ल 5.10, 29 (या 39) वर्ण

say for grep$_==reverse,0..<>

जरूरत sayसुविधा सक्षम। 29 वर्ण यदि आप मानते हैं कि मुक्त होने के लिए, अन्यथा 39 जोड़ने के लिए use 5.010;। STDIN पर तर्क।

पर्ल, 35 वर्ण

#!perl -l
print for grep $_==reverse,0..<>

पुराने पर्लगॉल्फ सम्मेलन का उपयोग करना, जो #!perlगिना नहीं जाता है, लेकिन इसके बाद के किसी भी झंडे हैं।

पर्ल, 36 अक्षर

print$_,$/for grep $_==reverse,0..<>

यदि कोई भी पात्र नहीं है।


क्या आप समझाने के लिए $ / क्या करते हैं?
गुरू

1
@ गुर्जो $/इनपुट रिकॉर्ड सेपरेटर है, जो न्यूलाइन को डिफॉल्ट करता है। यह शाब्दिक की तुलना में थोड़ा छोटा है "\n"
हॉब

मानचित्र का उपयोग कम है:map{say if$_==reverse}0..<>
jho

2
@ जो बुराई। इसे सबमिट करें :)
hobbs

1
यदि आप -Eइसके एवज में उपयोग करते हैं -e, तो आपको sayमुफ्त में मिलेगा ।
tchrist

9

Befunge 320 313 303 वर्ण

(महत्वपूर्ण न्यूलाइन और व्हॉट्सएप सहित)

 &:#v_v#  #                  :-1<
v91:<         v          <
0     >0.@    >\25**\1-:#^_v
pv   p09+1g09<^_           >$+     v
:>:25*%\25*/:| ^:p18:+1g18\<
 :          > >90g 1-:90p  | >  ^
>|           $^     <      >-|  ^  #<
 @           > 0 81p^        >:.25*,^
            ^                      <

मुझे आश्चर्य है कि अगर मैं रास्तों को फिर से बनाकर इसे छोटा कर सकता हूं ...

संपादित करें: एक अतिरिक्त रेखा से बचने के लिए शीर्ष भाग को फिर से बनाएं।


8

पर्ल 5.10 - 27 वर्ण

map{say if$_==reverse}0..<>

स्टड से तर्क पढ़ता है।


7

रूबी 1.9, 39 वर्ण

puts (?0..gets).select{|i|i==i.reverse}

स्टड के माध्यम से इनपुट (न्यूलाइन के साथ समाप्त नहीं किया जाना चाहिए)। उदाहरण आह्वान:

echo -n 500 | ruby1.9 palinenum.rb

संस्करण के लिए 40 वर्ण जो कमांडलाइन आर्ग का उपयोग करते हैं:

puts (?0..$*[0]).select{|i|i==i.reverse}

रोहित ने इनमें से प्रत्येक के pबजाय 3 पात्रों को सहेजने का प्रस्ताव रखा puts
पीटर टेलर

आपके कोड का उपयोग करके मुझे निम्नलिखित आउटपुट मिला, जो कि गलत प्रतीत होता है (मैं माणिक 1.9.2p0 (2010-08-18) [i386-mingw32] का उपयोग कर रहा हूं) irb(main):023:0> p (?0..gets).select{|i|i==i.reverse} 1 ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88", " 99"] => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88" , "99"] मेरे लिए नीचे दिए गए p ('0'..gets[0..-2]).select{|i|i==i.reverse} कोड आपके कोड को समझा सकते हैं।
रोहित

@PeterTaylor @Rohit pऔर putsसमतुल्य नहीं हैं, वास्तव pमें आउटपुट को तोड़कर, जैसा कि एक सरणी के साथ कहा जाता है, अगर किसी न्यूलाइन पर हर तत्व लिखते हैं , जबकि pबस कॉल करता है .to_s
वेंटरो

6

जे , 20 अक्षर

(#~(-:|.)@":"0)>:i.n

मैं इसे पढ़ सकता हूं! :) अच्छा
डिफाल्ट

btw, एक आवश्यकता आउटपुट संख्याओं को पूरा करने के लिए प्रति पंक्ति जो आपको जोड़ना चाहिए ,"0
डिफॉल्ट

@defhlt भी ,.काम करता है
Bolce Bussiere

5

पायथन, 57 51 वर्ण

for i in range(input()):
 if`i`==`i`[::-1]:print i

उपयोग:

echo 500 | python palindromic.py

3
छोटा:for i in range(input()):if`i`==`i`[::-1]:print i
स्टीवन रूम्बल्स्की

यदि इंटरएक्टिव इंटरप्रेटर का उपयोग करना वैध है, तो आप इससे बच सकते हैं printऔर बस कर सकते हैं if`i`==`i`[::-1]:i(मैं यह कहता हूं क्योंकि स्केल समाधान इस पर निर्भर करता है)।
बकुरीउ

रेंज समावेशी होनी चाहिए। और मुझे लगता है कि आप बाइट काउंट को 50 में बदल सकते हैं (लाइनब्रेक लाइनक्स पर कम होते हैं)।
18



3

जावास्क्रिप्ट 122 108 107 चरस ...

मुझे यकीन है कि यह अधिक गोल्फ हो सकता है - मैं इसके लिए नया हूं!

n=prompt(o=[]);for(i=0;i<=n;i++)if(i+''==(i+'').split("").reverse().join(""))o.push(i);alert(o.join("\n"));

या

n=prompt(o=[]);i=-1;while(i++<n)if(i+''==(i+'').split("").reverse().join(""))o.push(i);alert(o.join("\n"));

खैर, शुरुआत के लिए varएस अनावश्यक हैं, आप बस चीजों को वैश्विक बना सकते हैं। इसके अलावा prompt()कड़ाई से मापदंडों की जरूरत नहीं है।
क्लूलेस

हालांकि, आप एक अर्धविराम को बचाने के लिए मापदंडों का उपयोग कर सकते हैं :। prompt()n=prompt(o=[]);
मेलामोकब

इसके अलावा आप अभी भी एक है var i=0कि varआपके में हटाया जा सकता है for
मेलमोकब

1
चाल यह है कि 1 को जोड़ने से पहले i++<nतुलना i<nकरता है i। इस प्रकार, यह सभी तरह से चलता है i=n। यदि आप रोकना चाहते हैं i=n-1, तो आप ++i<nइसके बजाय उपयोग करेंगे ।
मेलामोकब

1
alert(o.join(" "))alert(o.join("\n"))चश्मा के अनुसार होने की जरूरत है । जब आप इसे ठीक करते हैं, तो अपने वर्ण गणना में 1 जोड़ें।
थॉमस एडिंग

3

पर्ल - 43 वर्ण

for$i(0..<>){if($i==reverse$i){print$i,$/}}

यह कोड गोल्फ में मेरा पहला प्रयास है, इसलिए मुझे पूरा यकीन है कि एक पर्ल प्रो इसे नीचे गोल्फ कर सकता है।



2

पीएचपी 64 58

for($i=0;$i<=$argv[1];print$i==strrev($i)?$i.'\n':'',$i++)

कमांड लाइन इनपुट के लिए $ _GET ['n'] को $ argv [1] में बदला गया।


2

स्काला 59

(0 to readInt)filter(x=>""+x==(""+x).reverse)mkString("\n")

मैं किसी भी स्काला को नहीं जानता, लेकिन क्या वह वास्तव में प्रिंटआउट पर है? मुझे लगता है कि यह एक स्ट्रिंग लौटाने की अभिव्यक्ति होगी।
उमर

इंटरैक्टिव स्केला REPL में, हाँ। आप इसे यहाँ का परीक्षण कर सकते simplyscala.com लेकिन बदलने के लिए readIntएक ठोस संख्या के साथ, ऑनलाइन।
उपयोगकर्ता अज्ञात

2

PHP, 59 55 53 chars

for($i=0;$i++<$argv[1];)if($i==strrev($i))echo"$i\n";

प्रयोग

php palindromic.php 500

संपादित करें: धन्यवाद थॉमस


आप लूप के लिए {s को चारों ओर से हटा सकते हैं और echo "$i\n"प्राप्त करने के लिए स्थान हटा सकते हैं echo"$i\n"। कि तुम कुछ chars बचा लेंगे। इसके अलावा, अगर आप चीकू बनना चाहते हैं तो आप \n`` के लिए बदल सकते हैं और एक चार को बचा सकते हैं ।
थॉमस क्लेसन

2

सी, 98 वर्ण

n,i,j,t;main(){for(scanf("%d",&n);i<=n;i-j?1:printf("%d ",i),i++)for(t=i,j=0;t;t/=10)j=j*10+t%10;}



2

Befunge, 97 (ग्रिड का आकार 37x4 = 148)

#v&#:< ,*25-$#1._.@
:>:::01-\0v >-!#^_$1-
*\25*/:!#v_::1>\#* #*25*#\/#$:_$\25*%
   `-10:\<+_v#

इस सवाल का बेहतर Befunge जवाब है। यह विशेष रूप से Befunge-93 है; मैं शायद इसे Befunge-98 के साथ और भी अधिक कॉम्पैक्ट बना सकता था। मैं इसे भविष्य के संपादन में शामिल करूँगा।

जब से तुम Befunge में तारों पर काम नहीं कर सकता, सबसे अच्छा मैं कर सकता की गणना प्रत्येक संख्या का अंकों-रिवर्स (जो मैं हैरान हूँ मैं बिना प्रबंधन करने में सक्षम था pऔर g) और मूल संख्या के साथ उसकी तुलना। डिजिट-रिवर्स अधिकांश कोड (मूल रूप से पूरी तीसरी और चौथी लाइनें) लेता है।

ध्यान दें कि प्रोग्राम, जैसा कि अब खड़ा है, इनपुट से नीचे की ओर संख्या को 0. पर प्रिंट करता है। यदि यह एक बड़ा सौदा है, तो मुझे बताएं। (चुनौती केवल उन्हें घेरने के लिए कहती है, विशेष रूप से बढ़ते क्रम में नहीं।)


+1। लाइनों को \nअकेले बंद किया जा सकता है , इसलिए यह 94 बाइट लंबी है। मुझे नहीं लगता कि आपके "ग्रिड आकार" की कोई विशेष प्रासंगिकता है।
हर-वादीम

2

05AB1E , 5 बाइट्स (गैर-प्रतिस्पर्धात्मक)

भाषा चुनौती का सामना करती है और इसलिए गैर-प्रतिस्पर्धी है । कोड:

ƒNÂQ–

स्पष्टीकरण:

ƒ      # For N in range(0, input() + 1)
 N     #   Push N
  Â    #   Bifurcate (pushes N and N[::-1])
   Q   #   Check for equality
    –  #   If true, pop and print N

CP-1252 एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


LʒÂQ4 है, हालांकि गैर-प्रतिस्पर्धा अभी भी ..
मैजिक ऑक्टोपस Urn

2

ब्रेजलॉग (2), भाषा प्रश्न को स्थगित करती है:

प्रश्न में बताए गए I / O प्रारूप के साथ, 8 बाइट्स

≥ℕA↔A≜ẉ⊥

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

आधुनिक पीपीसीजी I / O नियमों के साथ, 4 बाइट्स

≥ℕ.↔

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

यह एक ऐसा फ़ंक्शन है जो सभी आउटपुट उत्पन्न करता है, न कि पिछले उदाहरण की तरह एक पूर्ण प्रोग्राम, और इसलिए लिखित रूप में कल्पना का अनुपालन नहीं करता है, लेकिन मैंने सोचा कि मैं दिखाऊंगा कि कार्यक्रम कैसा दिखेगा यदि प्रश्न लिखा गया था आधुनिक I / O मानकों (जो कार्यों के उपयोग की अनुमति देता है, और जनरेटर के माध्यम से आउटपुट)।

व्याख्या

≥ℕ.↔ 
 ℕ    Generate natural numbers
≥     less than or equal to the input
  .   but output only the ones
   ↔  that would produce the same output if reversed

पूर्ण कार्यक्रम संस्करण के लिए, हम Aआउटपुट को पकड़ने के लिए एक अस्थायी चर बनाते हैं , स्पष्ट रूप से इसे लेबल करते हैं (यह एक कार्यक्रम के मुख्य विधेय के लिए अंतर्निहित रूप से किया जाता है), और ẉ⊥मानक आउटपुट के लिए जनरेटर के तत्वों को आउटपुट करने के लिए अच्छी तरह से ज्ञात तकनीक का उपयोग करें ।


आधुनिक PPCG I / O नियमों ने आपको जनरेटर को प्रस्तुत करने की अनुमति दी थी?
लीक नून

@LeakyNun: मैंने प्रस्ताव 30 नवंबर 2016 को बनाया था , लेकिन आम सहमति यह है कि वे उस बिंदु पर पहले से ही कानूनी थे (सिर्फ दस्तावेज नहीं)। हमारे पास एक स्पष्ट नियम है जो अब उन्हें अनुमति देता है; 2016 के अधिकांश के माध्यम से, उन्हें स्पष्ट रूप से अनुमति नहीं दी गई थी और उन्हें स्पष्ट रूप से प्रतिबंधित नहीं किया गया था।

ओह, ठीक है, मैं देखता हूं।
लीक नून

1

अजगर

n=raw_input('')
for a in range(0,int(n)+1):
    r=str(a)
    if str(a)==r[::-1]:
        print r

हम्म ... 232 अक्षर वास्तव में बहुत प्रतिस्पर्धी नहीं है। शायद आप चर नामों को एक वर्ण में कम कर सकते हैं और चर और ऑपरेटरों के बीच रिक्त स्थान को हटा सकते हैं?
गारेथ

बहुत बढ़िया। पायथन की गोल्फिंग के लिए कुछ अच्छे सुझाव इस सवाल से मिल सकते हैं: codegolf.stackexchange.com/questions/54/…
Gareth

आप n - अन्याय की जगह int (n) को int (raw_input ()) से हटा सकते हैं - और यदि आप स्टेटमेंट में str (a) को r में बदल सकते हैं
उमर


1

क्यू (34 वर्ण)

इस Q समाधान के तर्क के रूप में n + 1 के बजाय n पास करें।

{i(&)({all i=(|)i:($)x}')i:(!)1+x}


1

क्यू (33)

{if[x="I"$(|:) -3!x;:x]} each til

संभवतः ऐसा करने का एक तरीका है, लेकिन वैसे भी, नमूना उपयोग (आप n पाने के लिए n + 1 दर्ज करते हैं):

q){if[x="I"$(|:) -3!x;:x]} each til  10
0 1 2 3 4 5 6 7 8 9

Tmartin द्वारा सुझाव, यह 29 तक नीचे जाता है:

({$[x="I"$(|:) -3!x;x;]}')(!)

एक ही उपयोग।



1

सी # ( 217 214 191 वर्ण)

गोल्फ संस्करण:

using System;using System.Linq;class P{static void Main(){int n=int.Parse(Console.ReadLine());do{var t=(n+"").ToArray();Array.Reverse(t);Console.Write(n+""==new string(t)?n+"\n":"");}while(n-->0);Console.ReadLine();}}

पठनीय:

using System;
using System.Linq;
class P
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        do
        {
            var t = (n + "").ToArray();
            Array.Reverse(t);
            Console.Write(n + "" == new string(t) ? n + "\n" : "");
        } while (n-->0);

        Console.ReadLine();
    }
}

यह n -> 0 ऑपरेटर का उपयोग करते हुए अवरोही क्रम में पैलिंड्रोम्स को प्रिंट करता है। (जैसा कि एन 0 पर जाता है)।

* संपादित संस्करण की जगह ... करते समय, जबकि 3 वर्णों की बचत होती है, लेकिन अब आपको n + 1 के साथ इनपुट करना होगा।

using System;using System.Linq;class P{static void Main(){int n=int.Parse(Console.ReadLine());while(n-->0){var t=(n+"").ToArray();Array.Reverse(t);Console.Write(n+""==new string(t)?n+"\n":"");}Console.ReadLine();}}

* संपादित: सरणी में कनवर्ट किए बिना स्ट्रिंग को उल्टा करने का एक बेहतर तरीका मिला:

using System;using System.Linq;class P{static void Main(){int n=int.Parse(Console.ReadLine());while(n-->0)Console.Write(n+""==string.Join("",(""+n).Reverse())?n+"\n":"");Console.ReadLine();}}

पठनीय:

using System;
using System.Linq;
class P
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        while (n-->0)
            Console.Write(n + "" == string.Join("", ("" + n).Reverse()) ? n + "\n" : ""); 
        Console.ReadLine();
    }
}

1

PHP 53

क्या 53 कम हो सकते हैं? चार अलग-अलग विकल्प:

for($i=$argv[1];$i-->0;)echo$i==strrev($i)?"$i\n":"";
for($i=$argv[1];$i-->0;)if($i==strrev($i))echo"$i\n";
while(($i=$argv[1]--)>0)echo$i==strrev($i)?"$i\n":"";
while(($i=$argv[1]--)>0)if($i==strrev($i))echo"$i\n";

यदि आप कायरता प्राप्त करना चाहते हैं ...

PHP 47

while(($i=$argv[1]--)>0)if($i==strrev($i))`$i`;

आपको एरर टेक्स्ट को इग्नोर करना होगा। हालाँकि, palindrome नंबर अभी भी कमांड लाइन के लिए आउटपुट हैं।


1

अजगर, ११

VhQIq`N_`NN

उदाहरण:

$ pyth -c 'VhQIq`N_`NN' <<< 200
0
1
2
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
101
111
121
131
141
151
161
171
181
191
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.