英語から外国人への翻訳者


18

ブリーフィング

エイリアンは地球上に定住しており、奇妙なことに、彼らのアルファベットは私たちのものとまったく同じです。それらの言語も、非常に明確で簡単に計算できる違いがある点で、私たちの言語に非常に似ています。

チャレンジ

文字列を取得し、エイリアンの同等の言語を出力します。翻訳は次のように機能します。

単語内のすべての母音を対応するものと交換します。

  Vowel |   With
--------+--------
   a    |   obo
   e    |   unu
   i    |   ini
   o    |   api
   u    |   iki

Alien-> Englishを翻訳する別の翻訳者を書くこともできますが、これはオプションです。

Input: Shaun
Output: Shoboikin

Input: Java
Output: Jobovobo

Input: Hello, World!
Output: Hunullapi, Wapirld!

母音が大文字の場合、最初の文字を大文字にします。

Input: Alan
Output: Obolobon

Input: Australia
Output: Oboikistroboliniobo

ルール

  • 標準的な抜け穴が適用されます
  • 改行を含むテキストで機能する必要があります
  • 関数、ラムダ、または完全なプログラムのいずれかを作成できます

    Capingrobotikilobotiniapins apin wrinitining thunu runuvunursunu trobonslobotapir!


Alien-> Englishを翻訳するために別の翻訳者を書いてもいいのわかりません。通常の翻訳者の代わりに逆翻訳者を書くことはできますか?
デニス

4
たぶんそれは私だけかもしれませんが、ここでもこの意味を持っているの私には明らかではありません。とにかく、実際のタスクの一部ではない場合、これがルールであるかどうかはわかりません。
デニス

@Dennisあなたは少し恥ずかしがり屋ですが、私はそれをより明確にするために編集しました。
ショーンワイルド

2
なぜ改行が必要なのですか?私の意見では、これは不必要であり、チャレンジの主要点に何も追加しません。
アドナン

1
入力に任意のASCII文字またはサブセットのみを含めることができます。たとえば、入力に数字が含まれることはありますか?
ライリー

回答:


14

Haskell、100 91バイト

(>>= \x->last$[x]:[y|(z:y)<-words"aobo eunu iini oapi uiki AObo EUnu IIni OApi UIki",z==x])

5
Hoboskunull確かに
jk。

12

TI-Basic、173 + 59 + 148 = 380バイト

エイリアンがTI-83 / 84電卓を使用することを願っています;)

メインプログラム、173バイト

ボーナス:通常の翻訳者と逆翻訳者のどちらを使用するかによって、2行目または3行目を維持します。

"("+Ans+")→Str1
"@a~obo@A~Obo@e~unu@E~Unu@i~ini@I~Ini@o~api@O~Api@u~iki@U~Iki@→Str2    <-- English to Alien
"@obo~a@Obo~A@unu~e@Unu~E@ini~i@Ini~I@api~o@Api~O@iki~u@Iki~U@→Str2    <-- Alien to English
For(I,2,length(Ans
If "@"=sub(Str2,I-1,1
Then
Str1+"~"+sub(Str2,I,inString(Str2,"@",I)-I
prgmQ
Ans→Str1
End
End

サブプログラム(prgmQ)、59バイト:

Ans→Str9
inString(Ans,"~
sub(Str9,Ans,length(Str9)-Ans+1→Str8
Str9
prgmR
Repeat Str9=Ans+Str8
Ans+Str8→Str9
prgmR
End

サブプログラム(prgmR)、148バイト:

Ans→Str0
inString(Ans,"~→Z
inString(Str0,"~",Ans+1→Y
inString(sub(Str0,1,Z-1),sub(Str0,Z+1,Ans-Z-1→X
sub(Str0,1,-1+inString(Str0,"~
If X
sub(Str0,1,X-1)+sub(Str0,Y+1,length(Str0)-Y)+sub(Str0,X+length(sub(Str0,Z+1,Y-Z-1)),Z-X-length(sub(Str0,Z+1,Y-Z-1

PS ~はトークン0x81@表し0x7F、トークンを表します。詳細については、こちらをご覧ください

これらのプログラムは、高いバイト数を持っている理由のPPS一部が理由でsub(inString(length(、およびすべて小文字の文字が各バイトの2つです...


私はあなたがコード見出しで一度混乱したprgmRと思いますprgmQか?
バイトコマンダー

はい、@ ByteCommanderをキャッチしてくれてありがとう:)
Timtech

8

Perl、56バイト

+1を含む -p

STDINに入力する

alien.pl

#!/usr/bin/perl -p
s%\w%"`"&$&|("A\x0fboE\x15nuI\x09niO\x01piU\x09ki"=~/\u$&\K.../,$&)%eg

表示どおりに機能しますが、\xXXエスケープを実際のキャラクターに置き換えて、要求されたスコアを取得します


1
+1エイリアンのアバターにのみ賛成。冗談ですが、解決策も素晴らしいです。

1
イエス・キリスト。Perl、女性と紳士。
Priiduニームレ

6

sed 89

s,a,&b\n,gi
s,i,&n\r,gi
s,o,&p\r,gi
s,u,&k\r,gi
s,e,&n\f,gi
y,aeouAEOU\n\r\f,ouaiOUAIoiu,

これは、改行を含む入力に対して機能しますか?
ヨルダン

@ジョルダン sedは「一度に1行」を読み取ります。したがって、最初の改行までのすべてを処理し、それを印刷し、改行を印刷し、さらにテキストがある場合は最初からやり直します。
ライリー

ああ、もちろん。👍🏻
ヨルダン

@Jordanこれを書いたとき、それはルールではありませんでしたが、とにかくうまくいきました。
ライリー

6

Python、99 95 93バイト

lambda s:"".join(("ouiaiOUIAI bnnpkbnnpk ouiiiouiii"+c)["aeiouAEIOU".find(c)::11] for c in s)

ideone.comで...

ものすごく単純。母音リストで各文字を見つけたインデックスを取得し、それを使用して必要な3文字を取得します。見つからない場合は、文字列の末尾に現在の文字を貼り付けるだけで.find()戻り-1ます。スペースは必要なので、どの文字"a"にも追加されcたが含まれません。翻訳された母音は、文字順にグループ化されます(すべての翻訳の最初の文字、2番目、3番目)。


うわー、すてきな創造的なアプローチ。感銘を受けました:)
バイトコマンダー

1
スペースを削除できます["aeiouAEIOU".find(c)::11] for
アクロリス

6

05AB1E28 27 20バイト

žÀ.•₅%~≠#ùÛãú•3ôD™«‡

オンラインでお試しください!

Unuxplobonobotiniapin

žÀ                    # the string "aeiouAEIOU"
  .•₅%~≠#ùÛãú•        # the string "obounuiniapiiki"
              3ô      # split in pieces of 3
                D™«   # concatenate with a title-case copy
                   ‡  # transliterate

2
Ini lapivunu gapilfining!
ショーンワイルド

@BasicallyAlanTuring:それを頭の中で翻訳するには長すぎた。逆翻訳者が必要だと思う:P
エミグナ

2
それのために行く、あまり難しくはないはずです:P
ショーンワイルド

怖い、ゴルフが大好きだと思う。
datagod

質問を変更したため、回答が無効になりました。これは新しい行で動作する必要があります
ショーンワイルド


5

Python、129バイト

lambda s:"".join([str,str.capitalize][ord(l)<91]({"a":"obo","e":"unu","i":"ini","o":"api","u":"iki"}.get(l.lower(),l))for l in s)

ideone.comで実行中

これは、より適切にフォーマットされたバージョンです。

lambda s: \
    "".join(
        [str, str.capitalize][ord(l) < 91](
            {"a":"obo", "e":"unu", "i":"ini", "o":"api", "u":"iki"}
            .get(l.lower(), l)
        )
    for l in s)

最も興味深い部分はある{ ... }.get(l.lower(), l)に保存されている文字を探すためにしようとしているl辞書に小文字に変換すると、いずれかの翻訳版(見つかった場合)を返すか、あるいはオリジナルの手紙、
そして[str, str.capitalize][ord(l) < 91]( ... )その元の文字が大文字(だったかどうかをチェックしますASCIIコードポイントが91未満)で、str()引数として文字を使用して関数を呼び出します(大文字でない場合は何もしません)またはstr.capitalize()関数(引数文字列の最初の文字を大文字に変換します)。


5

C(GCC) 150の141 136 134バイト

a;i;e(char*n){for(char*v=" AEIOUIAI",*t;i=*n++;printf(&a))t=index(v,i-i/96*32),a=t?t-v:0,a=a?v[a+3]|L" 潢畮楮楰楫"[a]<<8|i&32:i;}

オンラインでお試しください!

@algmyrによる回答と@ ASCII-onlyのおかげで-8に基づく

少ないゴルフバージョン

a;i;
e(char*n){
  for(char*v=" AEIOUIAI",*t;i=*n++;printf(&a))
    t=index(v,i-i/96*32),
    a=t?t-v:0,
    a=a?v[a+3]|L" 潢畮楮楰楫"[a]<<8|i&32:i;
}

149?a;l;i;e(char*n){for(char*v=" AEIOU",*t;i=*n++;printf("%c%c%c"+4*!a,(a?" OUIAI"[a]:i)|i&32," bnnpk"[a]," ouiii"[t=index(v,i-32*l),a=t?t-v:0]))l=i>96;}
ASCIIのみ

たぶん149:a;l;i;e(char*n){for(char*v="AEIOU",*t;i=*n++;printf("%c%c%c"+4*!a,(a?" OUIAI"[a]:i)|i&32," bnnpk"[a]," ouiii"[t=index(v,i&95),a=t&&t-v<5?t-v+1:0]));}
ASCIIのみ

144:a;l;i;e(char*n){for(char*v=" AEIOU",*t;i=*n++;)printf("%c%c%c"+4*!a,a?" OUIAI"[a]|i&32:i," bnnpk"[a]," ouiii"[t=index(v,i-i/96*32),a=t?t-v:0]);}
ASCIIのみ

4

バッチ、215バイト

@echo off
set/pt=
set s=
:l
if "%t%"=="" echo(%s%&exit/b
set c=%t:~0,1%
for %%a in (obo.a unu.e ini.i api.o iki.u Obo.A Unu.E Ini.I Api.O Iki.U)do if .%c%==%%~xa set c=%%~na
set s=%s%%c%
set t=%t:~1%
goto l

STDINで入力を受け取ります。文字ごとに処理すると、大文字と小文字が区別されるという便利さがあります。


バッチはすべてにとって最悪のツールですよね?(まあ、少なくともTI-Basicを倒しました:)ところで、バッチでコードゴルフを見るのはいいですね!
YoYoYonnY

4

Pyth、42バイト

#sXw"aeiouAEIOU"+Jc"obounuiniapiiki"3mrd3J

STDINで入力を受け取り、出力を出力するプログラム。

オンラインで試す

使い方

#sXw"aeiouAEIOU"+Jc"obounuiniapiiki"3mrd3J  Program.
#                                           Loop until error statement:
   w                                         Get w, the next line of the input
                   "obounuiniapiiki"         Yield string literal "obounuiniapiiki"
                  c                 3        Split that into groups of three characters
                 J                           Assign that to J and yield J
                                     mrd3J   Map title case over J
                +                            Merge the lower and title groups
    "aeiouAEIOU"                             Yield string literal "aeiouAEIOU"
  X                                          Translate w from that to the three-character
                                             groups
 s                                           Concatenate that
                                             Implicitly print

4

C、167バイト

Cをコーディングするときに常にメイン関数を実行する習慣を破りたくありませんでしたが、これはメインのバージョンよりも大幅に短く、この方法で、私が望むものを綴るために別の文字を取得しました!

ゴルフ

a;l;i;e(char*n){for(;i=*n++;l=i>90,i-=32*l,a=!(i-65)+2*!(i-69)+3*!(i-73)+4*!(i-79)+5*!(i-85),printf(a?"%c%c%c":"%c",(a?"HOUIAI"[a]:i)+l*32,"ibnnpk"[a],"!ouiii"[a]));}

コメント済み

a;l;i;
e(char*n)
{
    for(;
        i = *n++;  /* Get char and advance */
        l = i>90,  /* Is lowercase? */
        i -= 32*l, /* Make uppercase */

        /* Is 1,2,3,4,5 depeding on the vowel and 0 for no vowel */
        a = !(i-65) + 2*!(i-69) + 3*!(i-73) + 4*!(i-79) + 5*!(i-85),

        printf(a?"%c%c%c":"%c",        /* Print 1 or 3 chars? */
               (a?"HOUIAI"[a]:i)+l*32, /* Print appropriate char+case */
                  "ibnnpk"[a],            /* Print appropriate char */
                  "!ouiii"[a]));          /* Print appropriate char */
}

Cには特別なものがあり、ポインターなどを使うとどれほど恐ろしいことがあるのでしょうか。



@ceilingcat答えは自分で投稿してください。それはそれ自身の答えに値するほど十分に分かれています。:)
algmyr


3

Javascript(ES6)、94 93 92バイト

s=>s.replace(/[aeiou]/gi,c=>"OUIAIouiai"[n="AEIOUaeiou".search(c)]+"bnnpk"[n%=5]+"ouiii"[n])

edc65のおかげで1バイトを節約ニールのおかげで1バイトを節約

デモ

let f =
s=>s.replace(/[aeiou]/gi,c=>"OUIAIouiai"[n="AEIOUaeiou".search(c)]+"bnnpk"[n%=5]+"ouiii"[n])

function translate() {
  document.getElementById("o").value = f(document.getElementById("i").value);
}
translate();
<input id="i" size=80 oninput="translate()" value="Hello, World!"><br><input id="o" size=80 disabled>


1
戻り値をチェックするに.indexOfして.search使用~するのではなく<0
edc65

1
母音だけを交換するとどうなるかを調べましたが、元々s=>s.replace(/[aeiou]/gi,c=>"ouiaiOUIAI"[n="aeiouAEIOU".indexOf(c)]+"bnnpk"[n%=5]+"ouiii"[n])はまだ93バイトでした。しかし、c現在は母音であることがわかっているため、バイトを保存するsearch代わりに使用できindexOfます!
ニール

@ニール-いいね!実際に両方試してみましたが、それらの組み合わせについては考えませんでした。
アーナルド

2

Java 8、172バイト

String f(String s){String v="AEIOUaeiou",r="OboUnuIniApiIkiobounuiniapiiki",o="";for(char c:s.toCharArray()){int n=v.indexOf(c);o+=n>-1?r.substring(n*3,n*3+3):c;}return o;}

なし:

String f(String s){
    String v="AEIOUaeiou",r="OboUnuIniApiIkiobounuiniapiiki",o="";
    for(char c:s.toCharArray()){
        int n=v.indexOf(c);
        o+=n>-1?r.substring(n*3,n*3+3):c;
    }
    return o;
}

そして、エイリアンは英語に戻ります(171バイト):

String g(String s){String[] v="AEIOUaeiou".split(""),r="Obo Unu Ini Api Iki obo unu ini api iki".split(" ");for(int i=0;i<v.length;i++)s=s.replaceAll(r[i],v[i]);return s;}

ゴルフをしていない:

String g(String s){
    String[] v="AEIOUaeiou".split(""),r="Obo Unu Ini Api Iki obo unu ini api iki".split(" ");
    for(int i=0;i<v.length;i++)s=s.replaceAll(r[i],v[i]);
    return s;
}


2

Mathematica、128バイト

#~StringReplace~{"a"->"obo","A"->"Obo","e"->"unu","E"->"Unu","i"->"ini","I"->"Ini","o"->"api","O"->"Api","u"->"iki","U"->"Iki"}&

IgnoreCase->Trueケースチェックと組み合わせて使用することで、より短いプログラムを取得できるかどうかわからない。


2

C 178バイト

char*p[256],*a="obo\0unu\0ini\0api\0iki\0Obo\0Unu\0Ini\0Api\0Iki",*b="aeiouAEIOU";main(c){for(c=0;b[c];++c)p[b[c]]=a+4*c;for(;(c=getchar())>0;)p[c]?printf("%s",p[c]):putchar(c);}


@ceilingcat&cは、byte1 byte2 byte3として番号を保存すればOKになります。たとえば、メモリに255をff 00 00 00として保存します。
RosLuP

2

C、163 162 159バイト

char*t="aeiou";n,k;q(char*x){for(;*x;n<0||(*x=t[n>1?n%2?0:2:n+3])&&k>90||(*x-=32),printf("%c%.2s",*x++,n<0?"":&"bonunipiki"[2*n]))n=strchr(t,tolower(k=*x))-t;}

char*t="aeiou";forループに入れると1バイト節約されます
Mukul Kumar


2

C#、133 121バイト

s=>{int i;return string.Concat(s.Select(c=>(i ="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));}

編集(に感謝milk

ありがとう:)私は実際にこのオーバーロードを知っていますが、これを書くときにどういうわけかそれを完全に忘れていました。

s=>string.Concat(s.Select((c,i)=>(i="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));

Select(char, int)オーバーロードを使用するiと、宣言する必要がなく、すべてを1行に入れることができます。s=>string.Concat(s.Select((c,i)=>(i="AIUEOaiueo".IndexOf(c))>-1?"OboIniIkiUnuApioboiniikiunuapi".Substring(i*3,3):c+""));
ミルク

2

C、207 202バイト(Cyoceに感謝)

#include <stdio.h>
#define r(c,t) case c:printf(t);continue;
int main(){int c;while(~(c=getchar())){switch(c){r('a',"obo")r('e',"unu")r('i',"ini")r('o',"api")r('u',"iki")default:putchar(c);}}return 0;}

1)あらゆる種類の宣言の前にtypeを省略したくない

2)使用できないコード(main()関数なし)を配置することはあまり好きではありません

使用法:

c89 cg.c -o cg; echo "Testing" | ./cg

PPCGへようこそ!
マーティンエンダー

@MartinEnder、それは予期しないことですが...ありがとうございます:)
Xdevelnet

(c=getchar())!= EOFになることができます~(c=getchar())
チョイス


1

Swift 2.2 196バイト

¯\ _(ツ)_ /¯

ゴルフ

var r = ["a":"obo","e":"unu","i":"ini","o":"api","u":"iki"];var q={(s:String) in var o = "";for var i in s.lowercaseString.characters{o += r[String(i)] != nil ? r[String(i)]!:String(i)};print(o);}

非ゴルフ

var r = ["a":"obo","e":"unu","i":"ini","o":"api","u":"iki"]
var q={(s:String) in
    var o = ""
    for var i in s.lowercaseString.characters {
        o += r[String(i)] != nil ? r[String(i)]!:String(i)
    }
    print(o)
}

スペースはvar r = [必要ですか?
チョイス

遊び場アプリでは、割り当ての間にスペースを入れないとエラーが発生し、スペースを追加するように指示されます。Swiftはおそらくゴルフで最悪の言語の1つですが、試してみるのは楽しいと思いました。
ダンワケム

興味深いことに、変数をクロージャーに割り当てたときにそのエラーが表示されませんでした。したがってすくめ男
Danwakeem

ええ、私もそれに気づきました。それが私が混乱した理由です。
チョイス

0

Perl 6の 84の  82バイト

{my%o=<a obo e unu i ini o api u iki>;S:i:g[<{%o.keys}>]=%o{$/.lc}.samecase($/~'a')}
{my%o=<a obo e unu i ini o api u iki>;S:i:g[<[aeiou]>]=%o{$/.lc}.samecase($/~'a')}

拡張:

# bare block lambda with implicit parameter 「$_」
{
  # create the mapping
  my %v = <a obo e unu i ini o api u iki>;

  # replace vowels in 「$_」
  S
    :ignorecase
    :global
  [
    <[aeiou]>
  ]

  = # replace them with:

  %v{ $/.lc }
  # change it to be the same case as what was matched, and a lowercase letter
  .samecase( $/ ~ 'a' )
}

使用法:

my &english-to-alien = {my%o=<a obo e unu i ini o api u iki>;S:i:g[<[aeiou]>]=%o{$/.lc}.samecase($/~'a')}

say english-to-alien 'Australia'; # Oboikistroboliniobo

0

C-192バイト

(わかりやすくするために改行が追加されました)

int c,j,b;main(){
char*f[]={"bo","nu","ni","pi","ki",""},
s[]={14,16,0,-14,-12};
while(c=getchar()){for(b=j=0;j<10;++j)
{if(c=="aeiouAEIOU"[j]){c+=s[j%=5];b=1;break;}}
printf("%c%s",c,f[b?j:5]);}}

ルックアップテーブルとブールスイッチ。

母音の表(文字列)の各文字を検索します。見つかった場合は、表のルールに従って変更しますs。各文字とそれに続く文字列を出力します。母音が見つかった場合は、値inで変更された文字にs続いてtableに格納されている残りの音節を出力しますf。母音が見つからなかった場合、元の文字と空の文字列を出力します。



0

Ruby、102 93 91 88 78バイト

gsub(/[#{b='aeiouAEIOU'}]/){'obounuiniapiikiOboUnuIniApiIki'[b.index($&)*3,3]}

説明:

ruby -pe "gsub(/[#{b='aeiouAEIOU'}]/){'obounuiniapiikiOboUnuIniApiIki'[b.index($&)*3,3]}"次のようなタイプの行を実行しAustraliaますOboikistroboliniobo。たとえば、次のように出力されます。

それは非常に簡単です。すべての母音を、(b)の置換される母音のインデックスに基づいた部分文字列で置き換えます。翻訳文字列の3文字と次の3文字。


1
出力の先頭と末尾の引用符(および入力に引用符が含まれる場合は内部エスケープ)がこれを無効にする可能性があります。とにかく、割り当てをbRegexp(/[#{b=...}/)に移動することで2バイトを節約できます。
ヨルダン

1
スペースp $*は不要だと思う
チョイス

1
-pフラグを使用して、追加のバイトを保存します。ruby -pe 'gsub(/[#{b="aeiouAEIOU"}]/){"obounuiniapiikiOboUnuIniApiIki"[b.index($&)*3,3]}'
バリューインク

私は78 + 2(-pe)を数えます。71を取得する方法は?
チャールズ、

@NotthatCharlesは、この場合、実行に必要な文字は本当に重要ですか?私はそれらを数えませんでした。
バイクタイヤ

0

TI-BASIC、201 197 195バイト

Ans+" →Str1:"AEIOUaeiou→Str2:"OUIAIouiai→Str3:"bonunipiki→Str4:1→X:While X<length(Str1:inString(Str2,sub(Str1,X,1→A:5fPart(.2A→B:If A:sub(Str1,1,X-1)+sub(Str3,A,1)+sub(Str4,2B-1,2)+sub(Str1,X+1,length(Str1)-X→Str1:X+1+2(A>0→X:End:sub(Str1,1,length(Str1)-1

ここで別のTI-BASICの答えが見つかると思います!

とにかく、入力はの英語の文字列ですAns
出力は翻訳された文字列です。

例:

"HE
HE
prgmCDGF1A
HUnu
"Hello
Hello
prgmCDGF1A
Hunullapi

説明:(
読みやすくするために改行が追加されました。同じ行からの複数の行:は、次のコードブロックでa で示されます。)

Ans+" →Str1                     ;append a space to the input string and store the result
                                ; in "Str1"
"AEIOUaeiou→Str2                ;store the upper- and lowercase vowels in "Str2"
"OUIAIouiai→Str3                ;store the beginning letter of each corresponding translated
                                ; vowel in "Str3"
"bonunipiki→Str4                ;store the remaining letters of each translated vowel
                                ; in "Str4"
1→X                             ;store 1 in "X"
While X<length(Str1             ;loop until all English letters have been checked
inString(Str2,sub(Str1,X,1→A    ;get the current letter and store its index in "Str2"
                                ; into "A"
5fPart(.2A→B                    ;get which translated vowel end should be used
                                ; B ranges from 1 to 5
If A                            ;if the current letter is a vowel
sub(Str1,1,X-1)                 ;extract the substring of the input before the
                                ; current letter
: +sub(Str3,A,1)                ;append the translated vowel start
: +sub(Str4,2B-1,2)             ;append the translated vowel end
: +sub(Str1,X+1,length(Str1)-X  ;append the remaining substring of the input
: →Str1                         ;store the result of these concatenations into "Str1"
X+1+2(A>0→X                     ;check if A>0 (if the current letter was a vowel)
                                ; if true, increment "X" by three
                                ; if false, increment "X" by one
End
sub(Str1,1,length(Str1)-1       ;remove the trailing space and store the result in "Ans"
                                ;implicit print of "Ans"

ノート:

  • TI-BASICはトークン化された言語です。文字数がバイト数と等しくありませ

  • TI-BASICの小文字はそれぞれ2バイトです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.