Jawa / Говнокод #6688 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
public boolean intersects(final Range range) {
      return (((range.indexFrom >= this.indexFrom) ? range.indexFrom : this.indexFrom) <=
        ((range.indexTo <= this.indexTo) ? range.indexTo : this.indexTo));
    }

проверка пересечения двух диапазонов

Запостил: Lure Of Chaos Lure Of Chaos, (Updated )

Комментарии (15) RSS

  • А если один диапазон полностью находится в другом, это считается пересечением? [ну мало ли...]
    Ответить
    • поспешил я с функцией, там далее такое чудо:
      public Range[] union(final Range range) {
            return ((((range.indexFrom >= this.indexFrom) ? range.indexFrom : this.indexFrom) <= (range.indexTo <= this.indexTo) ? range.indexTo : this.indexTo))) ? new Range[] { new Range(          ((range.indexFrom <= this.indexFrom) ? range.indexFrom : this.indexFrom), ((range.indexTo = this.indexTo) ? range.indexTo : this.indexTo)) }          : new Range[] { range, this };
          }

      подсчитайте кол-во действий?
      Ответить
      • 1) не хватает ( после <= и в последнем тернарном >

        2)Все варианты:
        abcdefghijkl
        this: cdefghij
        range: cdefghij
        defghi
        cdef
        fghij
        bcdef
        fghijk
        bcdefghij
        cdefghijk
        bcdefghijk

        3) Вернуть область пересечения:
        public Range[] union(final Range range) {
          return new Range[] { 
                      new Range( 
              ((range.indexFrom >= this.indexFrom) ? range.indexFrom : this.indexFrom), 
               ((range.indexTo <= this.indexTo) ? range.indexTo : this.indexTo)        
              		  )
            }; 
        }
        Ответить
        • Не все.

          // наверно как-то так...
          public Range[] union(final Range range) {
          	if ( (range.indexFrom < this.indexFrom && range.indexTo < this.indexFrom) 
          	     ||
          	     (range.indexFrom > this.indexTo  && range.indexTo > this.indexTo)
          	)
          		return null;
          
          	if (range.indexFrom > range.indexTo) {
          	   	int tmp = range.indexTo;
          	   	range.indexTo = range.indexFrom;   
          	   	range.indexFrom = tmp;
          	}
          
          	return new Range[] { 
              	new Range( ((range.indexFrom < this.indexFrom)? this.indexFrom : range.indexFrom) ,
                              ((range.indexTo > this.indexTo)? this.indexTo : range.indexTo)           
                           )                
             };    
          }
          Ответить
          • рабочий (проходит все придуманные тесты) вариант такой:
            public Range[] union(final Range range) {
                  return (range == null) ? new Range[] { new Range(this.indexFrom, this.indexTo) } : ((((range.indexFrom >= this.indexFrom) ? range.indexFrom
                      : this.indexFrom) <= ((range.indexTo <= this.indexTo) ? range.indexTo : this.indexTo))) ? new Range[] { new Range(
                      ((range.indexFrom <= this.indexFrom) ? range.indexFrom : this.indexFrom), ((range.indexTo >= this.indexTo) ? range.indexTo : this.indexTo)) }
                      : new Range[] { range, this };
                }
            Ответить
            • и такие:
              |---| - this
              |+++| - range
              # - whitespace
              ----------------------------
              #######|-----|
              ##|+++|
              ----------------------------
              ###|---|
              #######|+++|
              -----------------------------
              #####|-------|
              ###|++++++++|
              ------------------------------
              Ответить
              • TESTING [0:0] and[2:2]:
                intersects? false intersection:null
                union:[2:2][0:0]
                exclusion:[2:2][0:0]

                TESTING [0:3] and[2:4]:
                intersects? true intersection:[2:3]
                union:[0:4]
                exclusion:[0:1][4:4]

                TESTING [0:3] and[1:2]:
                intersects? true intersection:[1:2]
                union:[0:3]
                exclusion:[3:3][0:0]

                TESTING [2:4] and[0:2]:
                intersects? true intersection:[2:2]
                union:[0:4]
                exclusion:[3:4][0:1]
                Ответить
  • СYXAMLDGIVWCWFNJVSSNNYYSXBTSQJYETKHNBJWWPYYBJICGRZSMHZMMGYUAIKCJZPBGWQOHXMGNARYYAAFSEFZNPQNFASVGNPVCLSRMWPGABNNPYTNEFFYXNIJIDBTPTKTOFTUPUSMRTVZJQRQOHVJWQWPDGLNNCKTLVARMYEDGCQIYNDTYAGPQKEZWFAPPRETYOTSJBQWFOBOJGYCJNHDYWXTRCMRJQBRUPMZAKZYTNEGXOSXARVQPOSGZFCKMRIEMLMYFJXMKNZXSJYAZXODYBYDKNNBDQCGTVVUAJIENGWHVEXKUJQMYNFNJLSWJRJMWZYNQUMWWZCHLXNNMMKEKQPTXQSYFYPFSEFOKSXEGRJGXKYVLEYXTJNHHQIELOAOVHXXIXFNRKYRNBLREYPAMZLXPZDV
    Ответить
  • щ,H!CO.Z!P)R:S G"A?C.S(P(Q,B"J?T$VY.J.H:G$S,AV(Q:C,A:R(Z$L!EG:G T!U"R.Q!S:T ZV.J"S,J.R(K"C,L.X:I?N.O:L)C$D$Z(Z:MN!P.H!A"E.Q,SU"M B?HP T$Z!R?U:L!X:L!M)A(G)O.O!P$D(E$GS$E!P?M T$P.R(Y)SL)F$D K?W U)A,V(L:S"V C$M J)G.P)A J.J(G F,J"D"Z"F?L"K)A(L?Y$A"O"F!X?W$A,L?Y.J.E)W Z(A.F U!E)K C,P)P$E(X$B:U(X.F.I:H(IQ)G$GC!A,G T:A.H!Q$C,I,C,B$QP?N?M?R.E!H,K.N F"O E,B(X!X(D)P.U"J?U$F?S:F Y)I$RFY!K.P,U.Y:E.D!W$P!O,M)X HQ:Z,I A(F.C I(V?A$O$A(H:K:A)C)B!V)V Z:Z)I O J)T(H:N O.I)U P.N)E:T:U$B?O D(B"K:B:O(B)V$R$K,V:KE)C$P!D M"B?N(J,HU M,U$L"U$P:C L(FZ)UV)TV$J"B?A)Q(M,A?R(I YC.CVE,U$I$S(T)Z,S L:A.W)V:A"BR K X$T L)C!K,O I$S?V!Z$M"G"A!D!D(Y,K,R!M,Q"W$V!F K"K(X:T.U.L!S!A,K.FFT?I?W(Z$I T D:J"R$L?P"P"J?N:J!E(L,K(Q?A,E:O"L,F"G!T$I V$Q$K"A"HF:G$W!S"S,K$B!B"Z,I"Z(D,T:S U.J,J N)G M,S N$AA:S A M)E(P,P$X"R$X!S E.V$P,U.S!N.K,P(Q(V!A:P,W!R,D,L(Z!N)Z"W?M?J!H?Y Z.Q,P!U!Q.W"M$L?JB,B)Y H W)Q)V!E L?M,Z:N,G)P!M?S?V$I"F"Z R N?Q)Y:Q,N Y)F,R.T(E,R JR)N(C,OX(A(J)F"Z:O(E A$H(L)U.J!T W"Z!HZ$K(M!X?Q(B?O!O:E$X!Z(P"O(X$Z$J"O!I,S!O?Z!Q:J:K(T)N?A?S:Q"DK:U"J,S)S!V,R!A)X:D)O$B:H K)O!Y)H.J"K:J.SY$W"JСNBHZUNAUYTYAMVOUHAYPYQPCJHFZNDNRFXLMOSRNWHEZCFFHDQNWZBFJCSSNTQORVFLHITVHZEYWVVKIFMPMYYJWBXMJOQEEWMXJQMZBJALOUGPMYQWXVQAQCLNHEBLUGPVOYUXCHWMWBXUGBYAGSRNCNUTABFWOWGTLNIDNBJEXCWQFYTUGCXKBTOFVKS
    Ответить
  • г"M:K)F:O V.Z(K)C"U(B:B)S,N:F,Z:H(J"G)U Z(H,M!Z?DT(Y.M"K L,Y S$X R!K$F!L.Z.V.B T:N$G$F?Z)I:P(N)Q!G T.C?P N:Z:F:P TO)V!B(J?L?T(L(H)X(UC?FT E(K!L.V?E$U"M:OA$D E"Q.D$W)L:O)I:K"E,QG.GA$M(P$B"Y(I$S!P(ST:N XRD C P K"U:C D(L?X"U:U!I$R$W E N(C,M:F)X:S$P!S:E$J:H.D"CQ:T.T.U?U)D"H)K:R.V(I!CQ)B:D$V S)C(XJ?K!F P$M"RЫMUBJVKGDLOVFTYYQXMXWQVVWPKRRKOMOKJLBVDPJIPQPKMTAGIMQJSXADAPJARJIXBWOSSGCNNCRSNYZASVZFNBDJPGDEIYBKFYXNBZQKAWTMNYOMDKDCPWYNWAMSSZAXGHNNUJSACDZECHOIOFFNNIWZBIRAQQTKEIBMDTSXWEDUUSKVRVQIULMPIWIOYVFUYMSQJYEGNHNRLWQJXGNLKDXSRGJXITTZALMHTWEZPKMKYUNAKHBXL
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8