의 X 번호로 범위.으로 나눔 (Tuple2 인스턴스로) 내가 간격의 목록을 만들려면이</p> <p>동안 내 머리를 깨는 된 범위
이 특정 프로젝트에 자바 (더 스칼라는 허용되지 않습니다)에, 그래서 내가 vavr를 사용하고 있지만, 어떤 스칼라 솔루션은 아마
을 vavr 번역 할 수있는이 내 솔루션입니다 :
final int numberOfIntervals = 7;
final int min = 1;
final int max = 100;
final int targetSize = (max - min)/numberOfIntervals + 1;
final List<Tuple2<Integer, Integer>> l = Iterator.rangeClosed(min, max)
.grouped(targetSize)
.map(l -> Tuple.of(l.head(), l.last())).toList();
이 작품 :
(1, 15)
(16, 30)
(31, 45)
(46, 60)
(61, 75)
(76, 90)
(91, 100)
그러나 이것은 긴 중간 목록을 만듭니다. 나는 또한이 같은 것을 가지고 노는되었습니다
final int numberOfIntervals = 7;
final int min = 1;
final int max = 100;
final int targetSize = (max - min)/numberOfIntervals + 1;
final List<Tuple2<Integer, Integer>> l = Iterator
.rangeClosedBy(min, max + targetSize, targetSize).sliding(2)
.map(s -> of(s.get(0), s.get(1) - 1))
.toList();
그러나 이것으로 마지막 범위는 최대 값보다 큰 :
(1, 15)
(16, 30)
(31, 45)
(46, 60)
(61, 75)
(76, 90)
(91, 105)
함께했다, 당신은 어떤 결과를 원하는가? '100/7 = 14.285714', 그래서 15 그룹의 6 그룹과 10 그룹의 최종 그룹? 14 그룹의 15 그룹과 5 그룹의 2 그룹? 그렇다면'15 15 14 14 14 14 14' 또는'14 14 14 14 14 15 15'또는'14 14 14 15 14 14 15' 또는 다른 것? – Andreas
@Andreas가 결과를 추가 했으므로 마지막 범위가 더 작아 지므로이 경우'(91, 100)' – jen