宿題の時間!文字列の中で最も低い偶数桁を見つけてください


12

Stack Overflowからの別の素晴らしい質問は、チャレンジになりました!

以下のプログラムを作成します。

  1. ユーザー入力として文字列を受け入れます(パイプまたはコマンドライン引数ではありません)。入力のデータ型は文字列である必要があります。言語が入力に対して自動評価を行う場合は、文字列にキャストする必要があります。
  2. 最初の最小偶数のインデックス(0または1ベース)を求める数字は。
  3. プリント2つの整数、指数と最低でも数字。
  4. 何でもがない場合の数字は、-1を返し指標として、2番目の番号は何もすることができます。
  5. このため、ゼロは偶数ではありません。

左側の文字列が右側の値を出力した場合のテスト例:

25376  -->  0,2
523726 -->  1,2
583746 -->  4,4
53771  --> -1,0
_4___2 -->  5,2

勝者:文字数が最も少ないプログラムです。ボーナスもペナルティもありません。

編集:(標準入力について)ユーザー入力部分を台無しにしました。基本的にパイピングデータはなく、コマンドライン引数もありません。プログラム自体に何らかの種類のユーザープロンプトを提供する必要があります。


4
最小の偶数整数が2桁の場合はどうなりますか?冗談です。
— ベリサリウス博士2013

5
stdinの何が問題になっていますか?
— ジョンドヴォルザーク

1
@JanDvorak arbitrary意的なルールなので、それが理由です。

7
ゼロの制限が均等ではないのはなぜですか?それはかなり奇妙に思えます。
— イスジ

3
入力要件は本当に意味がありません。ほとんどのシステムでは、プログラムによってプロンプトが表示されるかどうかにかかわらず、入力は標準入力から行われます。入力がパイプされているかどうかは、プログラムの制御下にはありません。-ユーザーが対話型プログラムを作成することを目的とした場合、入力と出力(書式設定を含む)、および必要な相互作用について正確である必要があります。
— MtnViewMark

回答:


6

Golfscript、26(28)文字

'#{gets}'.'246'&8+$1<.@\?

例:

;'583746'
.'246'&8+$1<.@\?
#44

;'53771'
.'246'&8+$1<.@\?
#8-1

ライブテスト:http : //golfscript.apphb.com/?c=Oyc1Mzc3MScKLicyNDYnJjgrJDE8LjA9QD8%3D

説明:

  • '#{gets}'I / O要件を満たすためのrubyへのエスケープです。STDINは空であると想定されます
  • . 入力を複製します
  • '246'&8+8常に保持される場合を除いて、入力に存在する偶数を見つけます
  • $1< リストをソートし、最初の数字を取得しますが、文字列として保持します
  • .@\?スタック{digit、input、digit}を順序付けしてから、入力内の数字を見つけます。@peterTaylorの[array、array]署名に気づいてくれてありがとう?。

今回は、仕様の解釈に大胆に取り組んでいます。すなわち:

  • 仕様では、整数が出力される順序は規定されていません。他の@peterの提案:x?xを使用して修正します(一時変数は好きではありません。
  • 仕様では、2つの整数の間に区切り文字は必要ありません。見つかった数字は常に1桁なので、これはそれほど重要ではありません。存在する場合は、n@(スワップを実行する)、n\(実行しない)、または]`(出力をとしてフォーマットする)を追加します["8" -1]。

クレイジーな要件ではなく、任意の要件です。P

また、スペックが最初になるようにインデックスが必要ですが、私は十分にあなたがしなかった場合は教えてGolfScriptを読み取ることができません

@LegoStormtroopr仕様について言及している唯一のポイントは#4です。「偶数がない場合、インデックスとして-1を返します。2番目の数字は何でもかまいません」。#3は順序を指定しません。「区切り文字なし」の大胆さはどうですか?
— ジョンドヴォルザーク

ああ、あなたは正しい先生です!出力する2つの数値について言及しましたが、順序については言及していません。私は訂正します!

あなたは置き換えることができ.0=@?て.@\?か、:x?x1つの文字を保存して、順番を超える疑いを避けるために。8フォールバックとしての素敵な使用。
— ピーターテイラー

5

APL(37)

(デフォルトでは1ベースですが、に従います⎕IO)

{×⍴m←⍵/⍨⍵∊'2468':z,⍨⍵⍳⍕z←⌊/⍎¨m⋄¯1,0}⍞

説明:

  • ⍞:ユーザー入力の読み取り
  • m←⍵/⍨⍵∊'2468':以外のすべての文字を削除して2468、に保存しmます。
  • ×⍴m:あるかどうかを確認
  • ::その場合:
    • z←⌊/⍎¨m:各文字を評価しm、最も小さい数を見つけてに格納しzます。
    • z,⍨⍵⍳⍕z:zin のインデックスを返し⍵、その後にz。
  • ⋄:そうでない場合:
    • ¯1,0:戻る (-1, 0)

1
うわー、私はAPLを破りました(Jソリューションではなく、それでも...)
— ジョンドヴォルザーク

説明?APLはとても自明です...;)
— german_guy 14

3

Python 3、69

ここからアイデアを組み合わせます。

s=input();print(([(s.find(x),x)for x in'2468'if x in s]+[(-1,0)])[0]) 

リストよりも文字列を使用し、結果として(今は削除された) `引用符が省略されるのが好きです。
— SimonT

@boothby python 3を使用していることに気づかなかったと思います。python3でinput()ユーザー入力として文字列を受け入れます。
— ワシ

@SimonT `(バックティック)は単なる引用符ではありません。これは、Python 2のrepr()の廃止されたエイリアスです。しかし、Python 3では使用できなくなりました。だから私はそれを取り除く;)
— ワシ

@Wasiはい、私の間違い。
— ブースビー

@Wasi、はい、ありがとう。私はそれを認識していましたが、「現在削除された」とは、実際には言語の一部として削除されたことを意味します。乾杯。
— SimonT

3

ルビー、60文字

x=gets.chars.sort.find{|c|c=~/[2468]/};p x ?$_.index(x):-1,x
  • $_に読み込まれた最後の入力が含まれgetsます。
  • pinspect引数を呼び出し、結果を出力します。

3

perlの- - 94 - 53文字(または48)

index()のゼロベースのアプローチの代わりにpos、1 から使用します。CPANはありません。これを実行するとperl -nE、入力を待機します(これもから受信できますSTDIN)。

最初の一致(//)操作は、$_入力のデフォルト値()で機能し、指定された偶数と照合しsort、一致を配列に入れてから「スカラーリスト」に格納します($m)。スカラーコンテキストでは、並べ替えられた配列のリスト値は1項目長であるため、番号の中で最も一致する偶数で構成されます。

一致する最低の偶数桁を分離した後$m、2番目の一致操作に使用して$m、元の文字列での値の最初の出現を見つけます。ここではまだデフォルト値を使用しており$_、$min の内容との一致を保存しています$1(2番目のステートメントの()around の理由$m)。その後、posそしてsay残りを行う(少ない文字数に比べてindexとprint)。

perl -nE'($m)=sort/[2468]/g;/($m)/g;$1?say pos.",$1":say"-1,0"'
33467
3,4

出力順序またはコンマが重要でない場合、この5文字を​​短くすることができます。

($m)=sort/[2468]/g;/($m)/g;$1?say$1.pos:say"-10"

私の以前の試みで私は急いでエラーを犯しました-私はPythonとルビーを打ち負かしたかった(しかし失敗しました)...ため息。

受賞者と他の参加者のクールなソリューションについてperl6おめでとう-特に:-)このアプローチのPerl6の適応の可能性は、 " .comb(Masak et.al.によるfreenodeでの提案)を使用できます。

$_=get;my $n=.comb(/<[2468]>/).min;/$n/;say $/.from//-1,",$/"

python / ruby​​を打ち負かすことに集中していたため、偶数が存在しない場合に機能しなかった1つのライナーを投稿しました$SHELL。この作業バージョンはとてつもなく長くて恥ずかしいです。私に正しいサービス:恥を避けるために後で短縮します:
— G. Cito 14

古いハック:if(/[2468]/){for$i(2,4,6,8){if(index($_,$i)>-1){say$i,",",index($_,$i)+1;last}}}else{say"0,-1"}
— G. Cito 14

2
良いが、さらにゴルフをするための余地が残っている:($m)=sort/[2468]/g;/$m/g;say$&?pos.",$&":"-1,0"(47 + 1バイト、AFAIKに-nは追加のバイトがかかる)。
— ヘイコオベルディク14

NB。posオフセットを返します。したがって、実際には、例では1から始まるインデックスを返します。
— draegtun

@draegtun oopsie :-)ありがとう。スイッチは、それ以外の場合はカウントする必要があります@Heiko本当perlのが-M;-)たびに勝つ
— G. CITO

3

Perl 6の、37の 55 60文字

$_=get;say m/<{~.comb(/<[2468]>/).min}>/.from//-1,',',$/.Int

編集:質問を初めて誤解しました。この更新は正しいはずです。入力に含まれる2、4、6、または8の最小数を検出し、その最小数の入力に対して正規表現照合を実行します。$/.from一致の位置を取得し',', $/.Int、コンマに一致自体を加えたもの、またはテキストが一致しなかった場合は0です。

あなたがここにいる間に、コメントとircで私のエントリを修正するのを手伝ってくれたG. Citoに賛成票を投じてください:)


1
残念ながら、これは最初に見つかった偶数(2468)を印刷し、最低ではありません:( NB。また$/.from、何も見つからない場合に問題があります(これは私の古いバージョンのRakudoのバグかもしれません)。 !私のために)my$x=get;for 2,4,6,8 ->$n{if $x~~/$n/ {say $/.from,",$/";exit}};say "-1 0"; 75文字の中に付属していますが、私は確かに短いPerl6のソリューションを作ることができるんだ。
— draegtun

@draegtun ...昨日、perl5の試行で同様のエラーを作成しました(以下を参照)。私の修正により70文字が追加されました!〜50文字バージョンで更新しただけで、動作しているようです。数字のすべての偶数桁を並べ替えると、並べ替えの(現在の)最初の桁を使用して一致することができ、最下位と最初の桁があることを確認します。私は正しいですか?
— G.チート14

@ G.Citoは私には良さそうに見えますが、すでにあなたの答えを+1しています。数匹のチャーを剃る方法はわかりますが、ヘイコは私が提案しようとしていたものよりもさらに良い結果が得られたようです!
— draegtun 14

!ああ@draegtun、そうねえ、私は完全にそれから質問を誤解:(どうもありがとう、私はできるだけ早くこれを更新します
— Mouq

@mouqこれは、私が以下に投稿したperl5の例と同じアプローチを使用するアプローチですmy $n; $_="333992";$n=.comb(/<[2468]>/).min;/$n/;say $/.from//-1,",$/"。.comb約20分前に学んで、すでに気に入っています:
— G. Cito 14

2

J、44文字

echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1

偶数桁が見つからない場合、入力の最後の文字を出力します

例:

   echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1
523726
+-+-+
|1|2|
+-+-+
   echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1
53771
+--+-+
|_1|1|
+--+-+

説明:

  • echo ... i=.1!:1]1入出力です。私が望んでいるよりもずっと長い。入力iも同様に隠されます。
  • '2468'i.~ 入力内の各偶数桁の最初の出現を検出し、数字が見つからない場合は入力長を返します
  • (#~(#i)&>)「入力の長さがこれより大きいことによる選択」を読み取ります。つまり、入力を指すインデックスを選択します。私が望んでいるよりもずっと長い。
  • _1,~後ろに-1を追加します。アンダースコアは、負の値を表すJの方法です。
  • {. 最初の要素を選択します
  • (;{&i)2つのボックス内のその位置で入力文字と連結します。数字と文字を連結しているため、非ボクシング連結(,)は機能しません。ボックス化されていない表示が必要な場合、":最初に2文字のコストでインデックスをフォーマットする必要があります()。

2

Python 2.7-76

私は完全にbeatられることを期待する参照の答え。しかし、人々を始めるには:

s=raw_input()
print[(s.index(`e`),e)for e in[2,4,6,8]if`e`in s][:1]or(-1,0)

3
に変更するindexことにより、キャラクターを剃ることができますfind。に変更[2,4,6,8]することもできます2,4,6,8(前にスペースがあります)。
— ジャスティン

4
短い:print[(s.find(`e`),e)for e in 2,4,6,8if`e`in s+'8'][0]
— GRC

4
独自のルールを破ったと思います... raw_inputはいつstdinではないのですか?
— ランチャー

1
print[(s.index(c),c)for c in'2468'if c in s][0]or(-1,0)
— エリック

2

R、104

y=as.integer(strsplit(scan(,""),"")[[1]]);z=which(!y%%2&y);a=z[which.min(y[z])];cat(a,"-1 0"[!sum(a)],y[a])

例(Rでは、インデックスは1から始まります):

_4_502
6  2

_3_501
-1 0 

583746
5  4

2

Powershell、76 73 71

$s=read-host;2,4,6,8|%{if($i=$s.indexof("$_")+1){"$i,$_";break}};"-1,0"
  • $s=read-host ユーザー入力を保存します $s
  • 2,4,6,8|%{...}{}数字2、4、6、および8 の内部を実行します
  • $i=$s.indexof("$_")+1 セット$iの数字の1から始まるインデックスに$s又は0もし数字が見つかりません
  • if( $i=... ){...} そう$iでない場合、条件は真になります0
  • "$i,$_";break インデックスと数字を出力し、実行を停止します
  • "-1,0" そうでなければ出力 -1,0

これは、適切なインデックスを出力しません。PowerShellでは、質問に指定されたテストケースのように、インデックスはゼロから始まります。
— イッツィ

1
ルール#2では、インデックスは0または1ベースにすることができます。
— ダンコドゥルビッチ

ああ。見つけられませんでした。いずれにせよ、ここにあるのは5文字だけのゼロベースのバリアントです。$s=read-host;(2,4,6,8)|%{if(($i=$s.indexof("$_"))-gt-1){"$i,$_";break}};'-1,0'
— イッツィ

また、括弧2,4,6,8は不要であると確信しています。
— イッツィ

:あなたがもし条件を変更した場合、ゼロベースの変異体は、2つの文字を長くすることができるif(1+($i=$s.indexof("$_")))
— ダンコDurbić

2

C ++ 11、173(2つの改行文字を含む)

圧縮バージョンは次のとおりです。

#include<iostream> 
#include<string> 
int main(){std::string s;std::cin>>s;for(char c:"2468")for(char&k:s)if(k==c){std::cout<<(&k-&s[0])<<','<<c;return 0;}std::cout<<"-1,8";}

読みやすいバージョンは次のとおりです。

#include<iostream>
#include<string>
int main() {
    std::string s; // auto s = ""s; (since C++14: -3 characters)
    std::cin >> s;
    for (char c : "2468")
        for (char& k : s)
            if (k == c) {
                std::cout << (&k - &s[0]) << ',' << c;
                return 0;
            }
    std::cout << "-1,8";
}

古いバージョンは次のとおりです。

C ++ 11、175(2つの改行文字を含む)

圧縮バージョンは次のとおりです。

#include<iostream>
#include<string>
int main(){std::string s;std::cin>>s;for(char c:"2468"){int i=s.find(c);if(i<s.size()){std::cout<<i<<','<<c;return 0;}}std::cout<<"-1,8";}

読みやすいバージョンは次のとおりです。

#include<iostream>
#include<string>
int main() {
    std::string s;
    std::cin >> s;
    for (char c : "2468") {
        int i = s.find(c);
        if (i < s.size()) {
            std::cout << i << ',' << c; 
            return 0;
        }
    }
    std::cout << "-1,8";
}

試してください#define o std::cout<<。私はそれがあなたのコードを1文字でトリミングすると思います。

@ user2509848いや、実際には2文字長くなります。とにかくありがとう:)
— 靴

k==c?std::cout<<(...),throw 0:0;-条件演算子はif、必要なものがすべて式である場合、を置き換えることができます。throwは式であり、1文字よりも短いreturn。
— MSalters

1

C、80文字

main(){char a[81],b=strcspn((gets(a),a),"2468");printf("%d,%c",a[b]?b:-1,a[b]);}

1

C#-124

私はパーティーに少し遅れています

void Main(string[]a){var x=a[0].Where(w=>char.IsDigit(w));var y=x.Min();Console.Write(y%2==0?a[0].IndexOf(y)+","+y:"-1,0");}

0

Haskell、79文字

s&d=filter((==d).snd)$zip[-1..]$'0':s
main=interact$show.head.("24680">>=).(&)

これは、出力の書式設定で少し高速で緩やかに実行されます。

& echo 523726 | runhaskell 16083-LowEven.hs 
(1,'2')
& echo 583746 | runhaskell 16083-LowEven.hs 
(4,'4')
& echo 53771 | runhaskell 16083-LowEven.hs 
(-1,'0')
& echo _4___2 | runhaskell 16083-LowEven.hs 
(5,'2')
& echo 25376 | runhaskell 16083-LowEven.hs 
(0,'2')

0

PowerShell:145 103

オリジナルからの変更
asker からのコメントごとにエラークエリを削除しました。

コード:

"$([array]::IndexOf(($s=(read-host)-split''|?{$_}),($x=$s|?{$_%2-eq0}|?{$_-gt0}|sort|select -f 1))),$x"

チュートリアル:

"... "引用符内のすべてが出力に含まれます。

$(... )カッコ内のすべてがコマンドとして扱われ、コマンド自体の代わりにそのコードの出力が含まれます。

[array]::IndexOf(... )これは、配列を持つ要素のインデックスを取得するために使用されます。最初のパラメーターは、検索する配列オブジェクトです。2番目のパラメーターは、検出されるオブジェクトです。これは、最初に一致した要素のインデックスのみを出力します。私は単にIndexOfメソッドを直接使用してみました$s(例:$s.IndexOf($x)、しかし、これは私がまだ理解していない何らかの理由で失敗します-メソッドがそのオブジェクトに存在しないと主張しています。

(... )括弧内の式はの最初のパラメーターになりIndexOfます。

$s= $ sは、ユーザー入力を保存する変数になります。

(read-host)-split'' ユーザー入力を取得し、それを文字の配列に分割します。

|?{$_}によって生成される余分な空の配列要素を除外し-split''ます。

,(... )括弧内の式は、の2番目のパラメーターになりIndexOfます。

$x= $ sは、ユーザー入力からの最も低い偶数を格納する変数です。

$s|?{$_%2-eq0} $ sから偶数を引き出します。

|?{$_-gt0} ゼロを無効にします。

|sort 残りのオブジェクトをソートします。デフォルトの順序は昇順です。

|select -f 1 最初のオブジェクトを選択します。これは今では最も低い偶数桁になります。

,$x上記のコードは、最も低い偶数桁のインデックスを出力します。これにより、カンマが追加され、数字自体が出力されます。

ノート:

これは、おそらくルール4を少し引き伸ばしていることでしょう。偶数がない場合、出力には2番目の数字は含まれません。

また、入力に数値以外の要素が含まれている場合、これは終了しないエラーをスローします。スクリプトは引き続き実行され、適切な出力が提供されますが、実行$ErrorActionPreferenceする'SilentlyContinue'前に設定することをお勧めします。


@DankoDurbić Now that you've soundly defeated me, would you mind helping me figure out why I couldn't use $s.IndexOf here? It was giving me an error saying the method didn't exist for that object, even though $s|gm said it did. It works on the system I'm on now, but not the one I was trying to do it on earlier today. Is it a version compatibility issue? Earlier system was PSv2, current is PSv4.
— Iszi

Your $s is string[], and $s.indexof doesn't work because ...[System.String[]] doesn't contain a method named 'indexOf', which seems reasonable (I'm running PS 2.0). $s|gm returns members of System.String, not System.String[]. I'm not sure why it does that.
— Danko Durbić

0

vb.net (108c)

Sub Main()
t=ReadLine()                          '12c
For Each c In "2468"                  '20c  
i=t.IndexOf(c)                        '14c
If i>=0 Then Exit For                 '21c
Next                                  ' 4c
WriteLine("{0},{1}",i,If(i<0,0,t(i))) '37c
End Sub

Smells slightly cos it's exploiting VB's dynamic setting. Option Explicit Off and Imports System.Console.


0

VB.net (193c) using LINQ

This one is primarily utilising a LINQ query.

Dim r = From d In "2468" Group Join q In ReadLine.Select(Function(c, p) New With {.c = c, .i = p})
                              On d Equals q.c Into g = Group
                                        Skip While g.Count = 0 ' 138c
WriteLine(If(r.Any,r(0).g(0).i&","&r(0).g(0).c,"-1,0"))        '  55c

0

Golf-Basic 84, 91 characters

:L1/L1_L2i`L1:fpart(L1,2)2_L1:SortA(L1)@cumSum(L1)=length(L1):Thend`-1#d`cumSum(L1):Endd`L1
  • Make sure there's no 0 in the input (it's not even, who said it had to be odd?)
  • Get input into L1 (List 1)
  • Loop finding modulus of 2 for each value
  • Sort L1 from smallest to highest
  • Display the index (either -1 or the cumulative sum) and the smallest number

0

Bourne shell (sh), 88 chars

(echo 88;sed 's/./\n&/g')|nl -v-1|awk '{print $2,$1}'|sed '/^[^2468]/d'|sort -n|head -n1

I thought I'd do a string-processing thing for fun. Technically it reads from stdin, but if you run it interactively it'll prompt the user for input since the keyboard is the default stdin stream. Uses basic shell commands to split up the input on lines, number them (using the ill-known nl utility), filter out lines fitting the criteria, sort them and output the lowest-digit one. Prints 88 -1 if no even digit was found.


0

C++ - 223 221 Characters:

#include<iostream>
#include<string>using namespace std;
int main(){int s=9;int p=-1;string x;cout<<"Enter characters: ";cin>>x;for(int i=0;i<x.length();i++){int n=x[i]-48;if(n%2==0&n<s){s=n;p=i;}}cout<<p<<", "<<s;return 0;}

Readable version:

#include<iostream>
#include<string>
using namespace std;

int main() {
    int s = 9;
    int p= - 1;
    string x;

    cout << "Enter characters: ";
    cin >> x;

    for (int i = 0; i < x.length(); i++) {
        int n = x[i] - 48;

        if (n % 2 == 0 & n < s) {
            s = n;
            p = i;
        }
    }

    cout << p << ", " << s;

    return 0;
}

It is long, but not as bad as Java.


It's actually 221 + 2 (new line characters) otherwise it won't compile.
— Shoe

Oh. Word only detected 221, I will change it.

0

Javascript 93 characters

b=prompt();((r=b.match(/[2468]/g)||[-1]).sort(function(a,b){return a-b})[0])+","+b.indexOf(r)

Get all event numbers, sort the array and prints the first digit.


0

Mathematica, 157 characters

f = Row@{If[(x = Min@#) == Infinity, -1, Position[#, x][[1, 1]]],
      ",", x} &[IntegerDigits@ToExpression@StringReplace[#,
       {"0" -> "1", x_?DigitQ :> x, _ -> "1"}] /. _?OddQ -> Infinity] &

inputs = {"25376", "523726", "583746", "53771", "_4___2"}

f /@ inputs // Column

1,2

2,2

5,4

-1,∞

6,2


0

Julia, 84

julia> f(a)=(for i=2:2:8;(k=search(a,'0'+i))==0||return(k,i);end;(-1,0))
julia> f(readline(STDIN))
583746
(5,4)
julia> f(readline(STDIN))
_4___2
(6,2)

Julia really needs a shorter way to get input for golfing. I counted the definition of f and one call to f. One based indexing is why the answers are different from the examples.


0

JavaScript - 53 Characters

for(y=prompt(x=0);x<8&&(i=y.indexOf(x+=2))<0;);x+''+i

Reads input from prompt and outputs (to the console) the lowest even character then (without a delimiter) the first index of that character; if there are no non-zero even characters then it outputs 8-1.


0

C, 110 Characters

i,f,r,c,m=9;main(){while(r=getchar()>31){c=r-48;i++;if(c>=0&&~c&1&&c<m)m=c,f=i;}printf("%i,%i",m>8?-1:f-1,m);}

ungolfed:

i,f,r,c,m=9;
main(){
  while(r=getchar()>31){
    c=r-48;
    i++;
    if(c>=0&&~c&1&&c<m) m=c,f=i;
  }
  printf("%i,%i",m>8?-1:f-1,m);
}

0

Javascript, 69

a=prompt(),b=[-1,9];for(i in a)if(+a[i]%2==0&&+a[i]<b[1])b=[+i,+a[i]]

Reads the value, iterates through each character, if the number representation mod 2 equals 0 and the number is less that what is already stored in b, replace the values in b


0

Rebol, 69

s: input for n 2 8 2[if f: find s n[print[index? f f/1]q]]print[-1 0]


0

JavaScript/jQuery 149

Golfed

$(function(){
var i=prompt(),k=-1,n=0,c,e="2468";
while(n<i.length){c=i.charAt(n);k=e.indexOf(c);if(k>=0){break;}n++;}$('#d').append(k+","+n);
});

Full source

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div id="d"></div>
<script type="text/javascript">
$(function(){
var i=prompt();
var k=-1;
var n=0;
var c;
var e="2468";
while(n<i.length){
c=i.charAt(n);
k=e.indexOf(c);
if(k>=0){
break;
}
n++;
}
$('#d').append(k+","+n);
});
</script>
</body>
</html>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.