サマラのJavaOpenずJavaDay









最近、サマラで2぀の楜しいむベントが行われたした JavaOpenずJavaDayです。



最初は珟金賞プログラミングトヌナメントでした。 2番目は、トヌナメントの勝者が発衚された䌚議です。





コンファレンス



残念ながら、私たちは䌚議にしか参加できたせんでした。 むベントが営業日に萜ちたため、150人のホヌルは半分満員でした。 レポヌトは玠晎らしかった。 Raspberry PiでのJava FXおよびJava ME Embeddedのデモに特に満足しおいたす。 そしお、もちろん、Java ME Embeddedを搭茉したロボット。







䌚議資料はこちらから入手できたす 。



これがサマラでの最初のJavaDayであるこずは泚目に倀したす。 地元のテレビチャンネルは察応するプロットさえ芋せたした。 興味深い事実は、Microsoft TechDaysがかなり前から存圚しおいるが、同じ芏暡ではないずいうこずです。 この圢匏のITむベントが定期的に発生するこずを期埅したしょう。 そしお、Java運動は勢いを増すでしょう。



そしお最埌に、最もおいしい-トヌナメントタスクは、䜜成者のPavel Vasinによっお芪切に提䟛されたした。 タスクのテキストは倉曎されたせんでした。 以䞋がその答えです。



トヌナメント



トヌナメントのタスクは、スポヌツプログラミングの数孊的知識ずスキルを持぀候補者だけでなく、プロダクションに近い人々を特定するこずでした。 そのため、最初のタスクはアカデミックでした。Java蚀語の知識、タスクの工業的実装における良い、特に悪い慣行の知識、サポヌト、オブゞェクト指向プログラミング、クラス蚭蚈です。 2番目のタスクは実甚的であり、その結果、面倒でアカデミック性がありたせん。 お元気ですか。 圌のためにヒントシステムが開発されたした。 ここでのタスクは、人々が自分でタスクを蚭定し、それを解決するためのツヌルを遞択するこずでした。 同時に、圌らは時間を正しく評䟡し、分配したした。もし圌らが察凊できなかったり時間がないなら、圌らはヒントを取りたす。



タスク1


宇宙産業向けの非垞に倧きな゜フトりェア開発䌚瀟でコヌドレビュヌを行っおいるずしたす。 開発された゜フトりェアの信頌性、速床、品質の芁件は最高です。



印刷されたコヌドを衚瀺し、テンプレヌトが添付されおいる衚で、このコヌドで発生したすべおの゚ラヌ、䞍正確さ、朜圚的な問題などを瀺したす。 問題が倚ければ倚いほど良いです。 コヌドの各問題には、゚ラヌに特定の「重み」がありたす。 あなたの仕事は、このテストで最倧ポむントを獲埗するこずです。


問題コヌド
01 public class EmployeeList extends LinkedList implements List { 02 //   03 public static final Float _baseHourSalary = new Float("36.60"); 04 public static final Float _high_hour_salary = _maxHourSalary / 4; 05 public static final int _maxHourSalary = _high_hour_salary > 50 ? 110 : 55; 06 public Log log = LogFactory.getLog(); 07 private float[] koefs; 08 09 public EmployeeList() { 10 LoadKoefficients(); 11 } 12 13 @Override 14 public boolean add(Object o) { 15 for (Object obj : this) { 16 if (!(obj instanceof Employee)) continue; 17 if (o.equals(obj)) return false; //  ,     18 if (((Employee)o).getFio() == "  " 19 || ((Employee)o).getFio() == "  ") { 20 //  3244,       21 return false; 22 } 23 } 24 return add(o); 25 } 26 27 public void LoadKoefficients() { 28 float[] arr1 = KoefStorage.getKoefArray("ifns_2003_god"); 29 log.debug("   " + arr1.toString()); 30 float[] arr2 = KoefStorage.getKoefArray("ufns_2003_god"); 31 koefs = new Float[2000]; 32 for (int i = 0; i < arr1.length; i++) koefs[i] = arr1[i]; 33 for (int i = 0; i < arr2.length; i++) koefs[i + arr1.length] = arr2[i]; 34 recalculateKoeffs(); //     35 } 36 37 public void recalculateKoeffs() { 38 for (int i = 0; i < koefs.length; i++) 39 koefs[i] = koefs[i] < 0.88 ? koefs[i] / 4 : koefs[i] / 6; 40 } 41 42 public ArrayList getSalaries(LinkedList<Employee> employee) { 43 ArrayList result = new ArrayList(5); 44 for (int i = 0; i < employee.size(); i++) { 45 Employee e = employee.get(i); 46 if (!this.contains(e)) { 47 //     .      48 return new ArrayList(0); 49 } 50 Employee found = (Employee) this.get(this.indexOf(e)); 51 result.add( 52 found.getFio() == "  " //  53 ? _maxHourSalary : _baseHourSalary); 54 } 55 return result; 56 } 57 58 public LinkedList getSortedView() { 59 DataCollectionsHelper.sortBubble(this, new Comparator() { 60 public int compare(Object o1, Object o2) { 61 if (o1 instanceof Employee && o2 instanceof Employee) { 62 return ((Employee)o1).getTableNumber() - ((Employee)o2).getTableNumber(); 63 } else return -1; 64 } 65 }); 66 return this; 67 } 68 }
      
      









タスク2


コナンドむルの物語の1぀で、偉倧な探偵は圌の挔method法の本圓のテストずなった事件に出䌚いたした。 捜査の鍵は、「螊る人々」の特別な暗号化された蚀語を解き明かすこずであり、その助けを借りお犯眪者は圌らの通信を行った。 事件の過皋で、シャヌロック・ホヌムズは、圌の方法を䜿甚しお、1぀の単語に含たれるダンス人の数を蚈算でき、最も頻繁に䌚った人を特定するこずもできたした。 最初の単語の意味を掚枬したこず-「メッセヌゞはどこから始たるのですか もちろん、あいさ぀、ワト゜ン様 これは基本です」-探偵は他のすべおを簡単に蚈算したした。 その埌、圌は圌らの通信に参加し、ギャングを暎露するこずができたした。



圌の行動を繰り返すこずをお勧めしたすが、最新のテクノロゞヌを䜿甚したす。



あなたが持っおいる

1コンピュヌタヌ、Java、IDE

2簡単な方法で暗号化されたロシア語の文孊テキストの䞀節

3小説「戊争ず平和」L.N. トルストむ埩号化の埌に倚くの時間が残っおいる堎合、あなたが自分で占有するものがあるように、あなたは少し読むこずができたす

4順番に開く3぀のプロンプト1番、2番、3番のセット。 各チップを開くず、獲埗できるポむントの数が枛りたす。 50ポむントのみで、各チップを開くず、この量が10ポむント枛少したす。


暗号文
V + l9ooxrl9 3 + afzr2v + l5wxr12fzfb 3n45wa7l9d 5w3p 3e9p5v + 8bv + 5ワット3qxm6r2qx3p 3xrn4a | ooos 3n45wa7l9d 5w3p 3xrn4a | ooos 3e9p5v + 8bv + 5ワット3qxm6r2qx3p 3xrn4a | ooos 3n45wa7l9d 5w3p 3xrn4a | ooos 3e9p5v + 8bv + 5ワット3qxm6r2qx 3fz 3D MLU | 5whc 3fz 3z9xr | c 3e9 3l9fz + ahc 3qhv + e9e9p5v + fhd 35wd fbmlu | 3n4qhxr 3fz5wosa7 3n4v + 125wxr12fzfbv + hc 3fz5wosa | 3n4v + 125wxr12fzfb 3qhxr yfz5we9a | 312 3oo7 | e9a | fbv + 312xre9u | + aose9xroo 312xre9u | + aos yu | e9a | oo 3ooqhu | ooosu | + a 3 | cxr yd 312 3p5xrl9e9oov + l9oofzl9xrn4xr5wu | hc 3u 2 3mlp5xr5wd 3l9v + 3p5fzqhxrfbl9xr l 3d 5wfz9 + u | hc 3n4xrooxr + a 3xrl9 3e95wd fhfz5w 312 3p5v + p5xr + angooxr 3 + av + | cv + 8bfzl9u 3p | p 3fbu || cxrngooxr 3 yu | 5wv + 5w3p 3v + 312 3l9v + fbv + 5wu | 3qhu | 12xr5wa79 + fzfz 3m6 + afz | cqhfzqhxr12v + 5w 38bv + 3 | cqhv + l9fz9 + d hc 3l9d 3fz 3z9xr | c 3e9 3l9fz + ahc 3a | 35wd fbmlu | 3qhv + e9e9p5v + fhd 3n4qhxr 3v + l9l9d 3fz | cl9v + ooosu | 12l9d hc 3l9xr 3n4qhxr 3v + l9l9d 3fz | cl9v + ooosu | 12l9d 3qhv + e9e9u5v 3oov + p5ngooxr 3n4qhxre9ooxrhc 312xrngn4u | qh127 | r23p 3a | 3xr 3l9u | l 3n4xrfboofz 3l9fzfbu || cxr 3l9u | 38bl9v + a73p 3v + 312xrng12ooxrqh7 | r23p 3a | 3e9u | lfbv + e9 3d n4v + 5w 3e9xr 3e9ood 5wv + 3fz 38bv + z97 | 5w3p 3xr 3fbu | + a 3e9xrz9fzqhv + 5we9a | 3qhv + e9e9p5v + 8b7 | 12v + oooshc 3a | 35wd fbmlu | 3qhv + e9e9p5v + fhd 3xr 3e9u | z9u | hc 3a | 3127 | e9xrp5xr | cxr 3qhxre9oov + 3p 3l9u || c5wd n47 | l3p 3xr yu | 12v + a7e9os 3fz8ba | u9l9xr 3fz 3e9xr 312p5d e9xr + a3p 3l9u | 3n4osa73p 3l9v + 3e9p5v + fbp5fz 3l9u | 3r2xrfhd 3p 3l9xr 3p5 3 yv ++ av ++ a 3ooa | l9d e9oshc 3fz 3 yv ++ a7 | 3l9u | 3fz8bz9u || cv + a7oo 3 + au | l9a | hc 3 yv + fhu | 35wa7z9a | oo3p 3p5xr | c yv + 3a | 3e9 3l9fz + afz 3 | cd 5wa | a7hc 3e9u | qhv + c + fz + av + 3fz8b + av + l5wxr12l9v + 3l9u | xr yl9xrp5qhv + ool9xr 3n4qhfz | c5wv + mlv 3p5 3e9u | z9u | 3p 3fz 38bfzl9v + fz yv + 3a | p5xr125wu | 12l9v + 3ooxrfhu | 3 | cxr12xrqhfz5wv + 3p 3fbooxr 3xrl9v + 312e9u || c yv + 3qhv + yv + 3 + au | l9a | 312fz yu | oooshc 3l9xr 312xroo 3e9 3 + av + qhfzl9xr l 3n4u | ooqhxr12l9xr l 3e95wd fbv + l 38bv + z9v + 12l97 | l 3127 | mlu | 5w 3d 3 + au | l9a | 3p 3xr 3p5xrooxrqhxr + a 3a | 3fz 3r2xrfbd 3qhv + e9e9p5v + 8bv + oooshc 3e95wd fbv + l 312n4xr5wl9u | 3xrz97 | p5l9xr12u | l9l97 | l3p 3l9xr 312e9u | 3fhu | 38bv + z9v + 12l97 | l3p 3fzz9xr 3 + av + qhfzl9v + 3n4u | ooqhxr12l9v + 3z95wv + | cxr yv + qha | 3 + al9u | 3e9xr12u | qhmlu | l9l9xr 3xrz95w7 | e9u | 5wv + 3p 3p5v + p5 35wv + yxrl9oshc 3e95wd fbfz5wxre9os 3m6ooxr 3oov + p5 + w 3n4qhfzmlu | 5w 3a 3xr yl9v + fh y7 | 3p5 3 + av + qhfzl9u | 3n4u | ooqhxr12l9u | 3p 3v + 3xrl9v + 3ooqhv + r2zj 3ng 3fz 3xrz95w7 | e9u | 5wv + hc 312xroo 3fz 312e9u | hc



ヒント1
暗号文はロシア語の小さな話です。 改行はなく、ロシア語のアルファベットの文字1぀のレゞスタヌ内、句読点、スペヌスのみがありたす。 テキストは暗号衚方匏を䜿甚しお暗号化されたす。゜ヌステキストの各文字が蟞曞の1぀たたはグルヌプの文字に眮き換えられるず、グルヌプ内の文字数は゜ヌステキストの各コヌド化文字に察しお同じになりたす。 コナン・ドむルにはこのような人々の蟞曞がありたした。私たちの堎合、これらは英語のアルファベット、数字、スペヌス、いく぀かの特殊文字です。

眮き換えに䜿甚されるキヌを知らないず、この暗号を開くこずは䞍可胜に思えたす...しかし、問題は、珟代の蚀語ロシア語を含むで、異なる文字が異なる呚波数で芋぀かるこずです。 したがっお、このような暗号は、いわゆる 「呚波数分析」。 十分な量のテキストを䜿甚するず、頻床によっお゚ンコヌドされた文字がほが明確に決定されたす。 しかし、小さなパッセヌゞが暗号化されおいるため、その䞭に「歪み」が発生する可胜性があり、頻床の近い文字に぀いおは䞍確実性が残りたす。 さお、あなたは䜕ができたすか 私は再びシャヌロックを思い出したした-代わりに、いく぀かの特城的な文字の組み合わせや単語を解き、「解かれた」文字を修正しおもう䞀床詊しおください。 解決された単語ごずに、テキスト党䜓の解決策に非垞に近づきたす。 たた、このような分析甚のツヌルを自分で䜜成するほど䟿利であるほど、暗号をすばやく開くこずができたす。



ヒント2
ロシア語の文字の頻床の衚はありたすか トルストむは䜕のために欲しいですか 倧きなテキストを䜿甚するず、ロシア語の文字の䜿甚頻床を非垞に正確に蚈算できたす。 テキストを前凊理し、結果の頻床を正芏化するこずを忘れないでください。

ロシア語のテキストで最も頻繁に芋られる蚘号、぀たりスペヌスずその頻床を特定すれば、非垞に圹立ちたす。

暗号衚では、゜ヌステキストの各文字を文字のグルヌプで暗号化できるこずに同意したしたか サむズを調べる方法は ここでは、いく぀かの方法をアドバむスできたす。1から始たる単玔な怜玢によっお、暗号化されたテキスト内の文字グルヌプの出珟頻床を分析するには、適切な量の頻床は「特別」です。 最も頻繁に出珟するキャラクタヌのグルヌプを芋぀けようずするこずができたす-これはスペヌスになり、単語を制限したす。 たあ、平均的な単語の長さによっお、暗号グルヌプ内の文字数を芋぀けるこずは難しくありたせんトルストむのおかげです。



ヒント3
暗号文は「ANTON MIKHAILOVICH」ずいう蚀葉で始たりたす





答え


タスクを解決できなかった堎合、たたは単に結果を比范したい堎合は、答えを䜿甚できたす。

タスク1ぞの回答
最初は、このタスクを評䟡するために特別なテヌブルが䜜成されたしたが、タスクは少し倉曎され、テヌブルはたったく関連しなくなりたした。 さらに、倚くのポむントは、特定のチヌムのプログラミングおよび蚭蚈のスタむルに䟝存したす。 ぀たり 䞻芳の共有が行われたす。



芁するに

ルヌプ怜出、静的倉数の宣蚀、ストリングの==ずの比范、無限再垰などの単玔な゚ラヌの堎合 1ポむントが䞎えられたした。

浮動小数点の陀算が必芁な敎数陀算などの゚ラヌずパフォヌマンスを隠すため、たたはArrays.copyを䜿甚しない堎合、2〜3ポむントが䞎えられたした。

耇雑な時限爆匟の堎合、蚭蚈゚ラヌクラス5ポむント。



展開された堎合同じテヌブル

コヌドの゚ラヌ 知識の領域 ポむント
クラスはすでにLinkedListを実装し、オプションでListを実装したす スタむル 1
定数は慣䟋により呌び出されたせんHIGH_HOUR_SALARYはこのようなものでなければなりたせん スタむル 1
定数を宣蚀するずきのルヌプ 衚面 1
フロヌトのような定数は無理です。フロヌトが必芁です。 衚面 1
new Float "36.60"のコンストラクタヌはひどいです 衚面 1
_maxHourSalary / 4を蚈算するず、敎数陀算により予期しない結果が生じたす。_maxHourSalary型からfloatぞの明瀺的なキャストが必芁です 隠れた゚ラヌ 3
メ゜ッドの名前は、同意ではなくLoadKoefficientsですloadKoefficientsはそうあるべきです スタむル 1
リストを継承する堎合、ゞェネリックゞェネリックがなければなりたせん。 スタむル 2
コンストラクタはpublicメ゜ッドを䜿甚したす。これは継承の堎合に危険です 隠れた゚ラヌ 3
LoadKoefficientsおよびrecalculateKoeffsメ゜ッドは、メ゜ッドの内郚ロゞックにのみ必芁であるこずは明らかであるため、公開しおも意味がありたせん。 圌らの出版物はカプセル化に違反しおいたす OOP 3
addメ゜ッドから刀断するず、クラスの蚭蚈に゚ラヌがありたす-これはリストではなく、たくさんありたす再入力のチェックが実行されたす。 クラス蚭蚈 5
このクラスは、NOT Employeeを远加したずきず同じように動䜜したす 隠れた゚ラヌ 3
文字列が等しいかどうかを比范したす等しい必芁がありたす 衚面 1
o.getFio==のチェックはルヌプ内で行われたす倖郚でのチェックを劚げるものは䜕もありたせん 衚面 1
「バグ3244」のこのような修正の実践は悪質であるため、バグを修正するこずはできたせん。 クラス蚭蚈 3
リストにアむテムを远加するには倚くの方法がありたすが、オヌバヌラむドのみが远加されたす。 そのため、再定矩されたメ゜ッドで指定されたロゞックは垞に機胜するずは限りたせん。これは、最も゚ラヌの倚いロゞックよりもさらに悪いです 隠れた゚ラヌ 3
addoを返すず、無限再垰が発生したす。 super.addoでなければなりたせん 衚面 1
「Ifns_2003_god」-定数でレンダリングする必芁がありたす スタむル 2
䞍芁なポむンタヌではなく、配列のリスト党䜓をデバッグログに枡したいず思いたした。 arr1.toStringの代わりに、Arrays.deepToStringを䜿甚する必芁がありたした 論理゚ラヌ 2
配列党䜓をリストするのは倧倉な䜜業です。最初にデバッグモヌドがオンになっおいるかどうかを確認するこずをお勧めしたす 性胜 3
Float []配列は、䞀定のボックス化/ボックス化解陀のみを提䟛したす。 フロヌトでなければなりたせん[] 衚面 1
Arrays.copyを䜿甚しお配列をコピヌする必芁がありたす 性胜 3
正確に2,000個の芁玠の配列があるのはなぜですか しかし、ロヌドされたものが倚かれ少なかれある堎合はどうでしょうか 論理゚ラヌ 2
再蚈算のマゞックナンバヌの束 スタむル 2
デヌタ凊理クラスのロゞックはハヌドワむダヌドであり、ロゞックのこれらの郚分は通垞倧幅に倉曎され、クラスはこのように蚘述できたせんロゞックはrecalculateKoeffs、.getFio==でワむダヌドされたす クラス蚭蚈 5
LinkedListぞの愛ずその継承を決定するものは䜕ですか このクラスの前提条件は䜕ですか なし クラス蚭蚈 5
継承の理由は䜕ですか ここでは、クラスのタスクにたったく察応しおいたせん継承ではなく構成を䜿甚する必芁がありたした OOP 5
むンタヌフェむスぞのプログラミングはありたせん避けるべきだったArrayList、LinkedListの特定の実装ぞのリンクがたくさんありたす OOP 2
新しいArrayList5-なぜ正確に5なのか マゞックナンバヌ スタむル 2
for i = 0ルヌプでリストを調べおから、非生産的になりたす特にLinkedListの堎合。 それぞれに䜿甚する必芁がありたす 性胜 3
空のリストArrayList0を返す堎合、コレクションでEMPTY_LIST定数たたはemptyListメ゜ッドを䜿甚するのが正しい倚くの理由により 隠れた゚ラヌ、パフォヌマンス 3
䞀般に、入力リストの芁玠の1぀が内郚に芋぀からない堎合に空のリストを返すロゞックは、非垞に疑わしく䞍噚甚です クラス蚭蚈 3
文曞化されおいないパブリックメ゜ッド。 これらの方法が䜕をするのかをどのように掚枬したすか スタむル 2
リストからアむテムを取埗するこれはひどいthis.getthis.indexOfe 衚面 1
sortBubbleずCollections.sortを遞択しおみたせんか 衚面 1
メ゜ッドが呌び出されるたびに、匿名コンパレヌタヌが䜜成されたす。 クラスフィヌルド、たたはさらに良いこずに、静的フィヌルドに曞き蟌むこずができたす 性胜 3
比范されるアむテムが埓業員でない堎合、発行される金額は少なくなりたす。 これは、理解できないクラスの振る舞いの䟋ですコンパレヌタヌ芏玄の違反は蚀うたでもありたせん 論理゚ラヌ 3
差の圢のコンパレヌタヌには隠れた゚ラヌがありたす倧きすぎるたたは小さすぎる堎合 隠れた゚ラヌ 3
リストを゜ヌトしお倖郚ビュヌをリストに戻すこずは、非垞に䞍栌奜なクラス蚭蚈ですカプセル化が砎られるこずは蚀うたでもありたせん クラス蚭蚈 4
合蚈 95




タスク2ぞの回答
ANTON MIKHAILOVICH PPLUNUL、SAID「ECH」、AGAIN PUNED AGAIN、AGAIN SAID「ECH」、AGAIN PUNNED AGAIN、AGAIN SAID「ECH」ずゎヌン。 神ず神。 私はむリダ・パブロノィッチに぀いおもっずよく話したす。 むリダ・パブロビッチはコンスタンティノポルで千八癟䞉十䞉幎に生たれたした。 別のリトルボヌむはピヌタヌズバヌグに移されおおり、圌はキロナダ通りにあるドむツの孊校を仕䞊げたした。 圌はいく぀かの店で働いおいたから、誰かが䜕かをしたから、そしお革呜の初めに私は海倖に移䜏した。 圌ず共に神様。 アンナ・むグナティに぀いおもっずよく話したす。 しかし、アンナ・むグナティ゚フに぀いお蚀うのはそれほど簡単ではありたせん。 第䞀に、私はそれに぀いおほずんど䜕も知らず、そしお第二に、私は今、議長からALされ、私が䌝えるべきこずを忘れおいたした。 私は自分自身に぀いおもっず良く話したす。 私は非垞に成長しおおり、ステンレスで、優雅にドレスアップし、味わい、飲みたせん。レヌスには行きたせんが、女性に行きたす。 そしお女性は私を避けたせん。 私が圌らず歩いおいるずきでさえ愛。 セラフィマ・むスマむロノァは繰り返し私を自分に招埅したした。ゞナむダ・ダコブレフナはたた、い぀も私に䌚えおうれしいず蚀いたした。 しかし、ここでマリヌナペトロバは、私からおもしろい話をしたいず思いたす。 マリヌナペトロノナにずっお、私は完党に手のひらずしおバランスをずっおくれお感謝しおいたす。 これが起こったので、私は䞀床マリヌナ・ペトロノナに来たした、そしお、圌女はファックしたす -そしおはげたした。 ここずすべお。






PSどうやら、サマラにJUGがあった堎合、それは長い間機胜しおいたせんでした。 これがそうであるかどうかは誰にもわかりたすか



All Articles